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

Hàm NEW_TIME () trong Oracle

Trong Cơ sở dữ liệu Oracle, NEW_TIME() hàm chuyển đổi ngày từ một múi giờ cụ thể sang một múi giờ cụ thể khác và trả về kết quả.

Cú pháp

Cú pháp như sau:

NEW_TIME(date, timezone1, timezone2)

Vì vậy, hàm trả về ngày và giờ trong múi giờ timezone2 khi ngày và giờ trong múi giờ timezone1 date .

Lưu ý rằng trước khi sử dụng chức năng này, bạn cần đặt NLS_DATE_FORMAT tham số để hiển thị thời gian 24 giờ.

Các đối số timezone1 timezone2 có thể là bất kỳ chuỗi văn bản nào sau đây:

AST hoặc ADT Giờ ban ngày hoặc giờ chuẩn Đại Tây Dương
BST hoặc BDT Bering Standard hoặc Daylight Time
CST hoặc CDT Giờ chuẩn miền Trung hoặc giờ ban ngày
EST hoặc EDT Giờ chuẩn miền Đông hoặc giờ ban ngày
GMT Giờ trung bình Greenwich
HST hoặc HDT Giờ chuẩn Alaska-Hawaii hoặc Giờ ban ngày
MST hoặc MDT Giờ chuẩn miền núi hoặc ban ngày
NST Giờ chuẩn Newfoundland
PST hoặc PDT Giờ chuẩn Thái Bình Dương hoặc ban ngày
YST hoặc YDT Yukon Standard or Daylight Time

Ví dụ

Đây là một ví dụ:

ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS';

SELECT
    NEW_TIME(
        TO_DATE('2030-03-01 12:30:45', 'YYYY-MM-DD HH24:MI:SS'), 
        'AST', 
        'PST'
        )
FROM DUAL;

Kết quả:

2030-03-01 08:30:45

Như đã đề cập, khi sử dụng hàm này, NLS_DATE_FORMAT thông số cần được đặt để hiển thị thời gian 24 giờ, vì vậy, đó là những gì dòng đầu tiên thực hiện trong ví dụ trên. Bạn có thể bỏ qua dòng này nếu NLS_DATE_FORMAT trong phiên của bạn tham số đã sử dụng thời gian 24 giờ. Xem Cách đặt định dạng ngày cho phiên của bạn để biết thêm ví dụ về cách đặt định dạng ngày cho phiên hiện tại.

Đối số rỗng

Nếu bất kỳ đối số nào là null , kết quả là null :

SET NULL 'null';

SELECT
    NEW_TIME(null, 'AST', 'ADT') AS "1",
    NEW_TIME(TO_DATE('2030-03-01 12:30:45', 'YYYY-MM-DD HH24:MI:SS'), null, 'ADT') AS "2",
    NEW_TIME(TO_DATE('2030-03-01 12:30:45', 'YYYY-MM-DD HH24:MI:SS'), 'AST', null) AS "3"
FROM DUAL;

Kết quả:

      1       2       3 
_______ _______ _______ 
null    null    null   

Theo mặc định, SQLcl và SQL * Plus trả về một khoảng trống bất cứ khi nào null xảy ra do một SELECT trong SQL tuyên bố.

Tuy nhiên, bạn có thể sử dụng SET NULL để chỉ định một chuỗi khác được trả về. Ở đây tôi đã chỉ định rằng chuỗi null nên được trả lại.

Thiếu đối số

Đang gọi NEW_TIME() với số lượng đối số sai hoặc không chuyển bất kỳ đối số nào, dẫn đến lỗi:

SELECT NEW_TIME()
FROM DUAL;

Kết quả:

Error starting at line : 1 in command -
SELECT NEW_TIME()
FROM DUAL
Error at Command Line : 1 Column : 8
Error report -
SQL Error: ORA-00909: invalid number of arguments
00909. 00000 -  "invalid number of arguments"
*Cause:    
*Action:

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Trình điều khiển ODP.NET được quản lý không hiển thị trong hộp thoại Nguồn dữ liệu

  2. Chuyển đổi cơ sở 36 sang cơ sở 10 chỉ sử dụng SQL

  3. Làm cách nào để tăng bộ đệm dbms_output?

  4. JDBC ResultSet lấy các cột có bí danh bảng

  5. Làm thế nào để đưa ra một ràng buộc duy nhất cho một tổ hợp các cột trong Oracle?