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

Hàm CURRENT_TIMESTAMP () trong Oracle

Trong Cơ sở dữ liệu Oracle, CURRENT_TIMESTAMP() 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 WITH TIME ZONE .

Nó tương tự như LOCALTIMESTAMP , ngoại trừ LOCALTIMESTAMP trả về một TIMESTAMP giá trị.

Cú pháp

Cú pháp như sau:

CURRENT_TIMESTAMP [ (precision) ]

Trong đó 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 CURRENT_TIMESTAMP
FROM DUAL;

Kết quả:

06/AUG/21 08:32:31.165866000 AM AUSTRALIA/BRISBANE

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(CURRENT_TIMESTAMP, 'YYYY-MM-DD HH24:MI:SS')
FROM DUAL;

Kết quả:

2021-08-06 08:44:39

Độ chính xác

Dưới đây là một ví dụ chỉ định độ chính xác. 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 CURRENT_TIMESTAMP(9)
FROM DUAL;

Kết quả:

06/AUG/21 09:02:37.868264000 AM AUSTRALIA/BRISBANE

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 CURRENT_TIMESTAMP(10)
FROM DUAL;

Kết quả:

Error starting at line : 1 in command -
SELECT CURRENT_TIMESTAMP(10)
FROM DUAL
Error at Command Line : 1 Column : 26
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 CURRENT_TIMESTAMP 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 CURRENT_TIMESTAMP()
FROM DUAL;

Kết quả:

Error starting at line : 1 in command -
SELECT CURRENT_TIMESTAMP()
FROM DUAL
Error at Command Line : 1 Column : 26
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 CURRENT_TIMESTAMP(null)
FROM DUAL;

Kết quả:

Error starting at line : 1 in command -
SELECT CURRENT_TIMESTAMP(null)
FROM DUAL
Error at Command Line : 1 Column : 26
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. Java:Cách chèn CLOB vào cơ sở dữ liệu oracle

  2. Hàm COLLATION () trong Oracle

  3. Bắt đầu với Cơ sở dữ liệu tự trị của Oracle trên Đám mây

  4. PL / SQL ORA-01422:tìm nạp chính xác trả về nhiều hơn số hàng được yêu cầu

  5. 2 cách để kiểm tra mức độ tương thích trong Oracle (SQLcl &SQL * Plus)