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

Hàm LOCALTIMESTAMP () trong Oracle

Trong Cơ sở dữ liệu Oracle, LOCALTIMESTAMP() hàm trả về ngày và giờ hiện tại trong múi giờ phiên trong một giá trị của kiểu dữ liệu TIMESTAMP .

Nó tương tự như CURRENT_TIMESTAMP , ngoại trừ CURRENT_TIMESTAMP đó trả về TIMESTAMP WITH TIME ZONE giá trị.

Cú pháp

Cú pháp như sau:

LOCALTIMESTAMP [ (timestamp_precision) ]

Trong đó timestamp_precision tùy chọn đối số chỉ định độ chính xác phân số giây của giá trị thời gian được trả về.

Khi gọi hàm mà không có đối số, dấu ngoặc đơn phải được bỏ qua.

Ví dụ

Dưới đây là một ví dụ về cách gọi hàm mà không chỉ định độ chính xác:

SELECT LOCALTIMESTAMP
FROM DUAL;

Kết quả:

07/AUG/21 08:49:50.026443000 AM

Ví dụ này hiển thị ngày ở định dạng dựa trên giá trị của NLS_DATE_FORMAT trong hệ thống của tôi tham số (hiện là DD/MON/RR ). Tham số này lấy giá trị của nó từ NLS_TERRITORY tham số (trong đó của tôi là AUSTRALIA ).

Chúng tôi có tùy chọn thay đổi các tham số này (ví dụ:xem Cách thay đổi định dạng ngày trong phiên Oracle của bạn).

Ngoài ra, chúng ta có thể sử dụng một hàm như TO_CHAR() để trả về kết quả ở một định dạng khác.

Ví dụ:

SELECT TO_CHAR(LOCALTIMESTAMP, 'YYYY-MM-DD HH24:MI:SS')
FROM DUAL;

Kết quả:

2021-08-07 08:50:20

Độ chính xác

Dưới đây là một ví dụ chỉ định độ chính xác. Điều này xác định độ chính xác phân số giây của giá trị thời gian được trả về.

SELECT LOCALTIMESTAMP(9)
FROM DUAL;

Kết quả:

07/AUG/21 08:50:47.203717000 AM

Lưu ý rằng đối số chính xác phải là một số từ 0 đến 9.

Dưới đây là những gì sẽ xảy ra khi chúng tôi chuyển một giá trị nằm ngoài phạm vi đó:

SELECT LOCALTIMESTAMP(10)
FROM DUAL;

Kết quả:

Error starting at line : 1 in command -
SELECT LOCALTIMESTAMP(10)
FROM DUAL
Error at Command Line : 1 Column : 23
Error report -
SQL Error: ORA-30088: datetime/interval precision is out of range
30088. 00000 -  "datetime/interval precision is out of range"
*Cause:    The specified datetime/interval precision was not between 0 and 9.
*Action:   Use a value between 0 and 9 for datetime/interval precision.

Bỏ qua dấu ngoặc đơn mà không chỉ định độ chính xác

Như đã đề cập, khi gọi LOCALTIMESTAMP mà không chuyển precision đối số, bạn cần bỏ qua dấu ngoặc đơn.

Dưới đây là những gì sẽ xảy ra khi chúng tôi bao gồm các dấu ngoặc đơn mà không chỉ định độ chính xác:

SELECT LOCALTIMESTAMP()
FROM DUAL;

Kết quả:

Error starting at line : 1 in command -
SELECT LOCALTIMESTAMP()
FROM DUAL
Error at Command Line : 1 Column : 23
Error report -
SQL Error: ORA-30088: datetime/interval precision is out of range
30088. 00000 -  "datetime/interval precision is out of range"
*Cause:    The specified datetime/interval precision was not between 0 and 9.
*Action:   Use a value between 0 and 9 for datetime/interval precision.

Chúng tôi gặp lỗi tương tự như trong ví dụ trước. Cơ sở dữ liệu Oracle đang tìm kiếm một đối số chính xác giữa 0 và 9, nhưng chúng tôi không vượt qua.

Đối số rỗng

Lỗi tương tự xảy ra khi chuyển null :

SELECT LOCALTIMESTAMP(null)
FROM DUAL;

Kết quả:

Error starting at line : 1 in command -
SELECT LOCALTIMESTAMP(null)
FROM DUAL
Error at Command Line : 1 Column : 23
Error report -
SQL Error: ORA-30088: datetime/interval precision is out of range
30088. 00000 -  "datetime/interval precision is out of range"
*Cause:    The specified datetime/interval precision was not between 0 and 9.
*Action:   Use a value between 0 and 9 for datetime/interval precision.

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. chuyển vào tên bảng dưới dạng tham số plsql

  2. Trình tự Oracle không tạo ra số liên tục

  3. Xây dựng biểu đồ phụ thuộc bảng với truy vấn đệ quy

  4. Cách chèn dữ liệu trực tiếp từ Excel vào Cơ sở dữ liệu Oracle

  5. Ràng buộc duy nhất và chỉ mục duy nhất của Oracle