Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Cách Chèn Dấu thời gian trong Oracle ở Định dạng Cụ thể

Bạn không chèn dấu thời gian ở một định dạng cụ thể. Dấu thời gian (và ngày tháng) được lưu trữ trong cơ sở dữ liệu bằng cách sử dụng một đại diện bên trong, có độ chính xác là 7 và 11 byte tùy thuộc vào loại và độ chính xác. Có thêm thông tin về điều đó trong câu hỏi này , trong số những người khác.

Khách hàng hoặc ứng dụng của bạn quyết định cách hiển thị giá trị ở dạng chuỗi mà con người có thể đọc được.

Khi bạn làm:

to_timestamp(localtimestamp,'YYYY/MM/DD')

bạn đang chuyển đổi ngầm localtimestamp thành một chuỗi, sử dụng cài đặt NLS trong phiên của bạn, sau đó chuyển đổi nó trở lại dấu thời gian. Điều đó có thể ngẫu nhiên thay đổi giá trị - làm mất độ chính xác - nhưng sẽ không thay đổi cách giá trị được lưu trữ bên trong. Trong trường hợp của bạn, sự không khớp giữa cài đặt NLS và định dạng bạn đang cung cấp dẫn đến lỗi ORA-01830.

Vì vậy, lần chèn đầu tiên của bạn là chính xác (giả sử bạn thực sự muốn thời gian phiên, không phải thời gian máy chủ). Nếu bạn muốn xem các giá trị được lưu trữ theo một định dạng cụ thể sau đó thay đổi cài đặt NLS của phiên khách hàng của bạn hoặc tốt hơn là định dạng nó một cách rõ ràng khi bạn truy vấn nó, ví dụ:

select to_char(time, 'YYYY-MM-DD HH24:MI:SS.FF3') from activity_log


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách so sánh các nhóm bộ giá trị trong sql

  2. Lỗi thường gặp trong Oracle ORA-04068:trạng thái hiện có của các gói đã bị loại bỏ

  3. Đánh dấu cú pháp trong trình duyệt Oracle giống như SQL Server Management Studio

  4. Cú pháp nối ngoài Oracle

  5. Tôi cần thay đổi sql của mình như thế nào để có được thứ tôi muốn trong trường hợp này?