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
là 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
và 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: