Trong SQL Server, bạn có thể sử dụng TODATETIMEOFFSET()
hàm để trả về bộ datetimeoffset giá trị được dịch từ datetime2 biểu hiện. Nó chấp nhận hai đối số; ngày và mức chênh lệch mà bạn muốn áp dụng cho ngày đó.
Dưới đây là các ví dụ về cách sử dụng.
Cú pháp
Cú pháp của TODATETIMEOFFSET()
như sau:
TODATETIMEOFFSET ( expression , time_zone )
Ở đâu expression
là một biểu thức phân giải thành datetime2 giá trị và time_zone
là múi giờ bạn muốn áp dụng cho biểu thức đó (ngày).
Bạn có thể cung cấp múi giờ theo phút hoặc giờ. Nếu bạn cung cấp nó trong vài phút, hãy sử dụng một số nguyên (ví dụ:-120
), nếu không, để cung cấp nó trong giờ, hãy sử dụng một chuỗi (ví dụ:'+04.00'
). Phạm vi cho múi giờ là +14 đến -14 (giờ).
Ngoài ra, ngày bạn cung cấp được diễn giải theo giờ địa phương cho múi giờ được chỉ định.
Ví dụ 1
Dưới đây là một ví dụ cơ bản về cách sử dụng:
SELECT TODATETIMEOFFSET( '2112-01-01 00:00:00', '+08:00' ) AS Result;
Kết quả:
Result ---------------------------------- 2112-01-01 00:00:00.0000000 +08:00
Ví dụ 2 - Giá trị âm
Điều này giống với ví dụ trước, ngoại trừ việc tôi sử dụng giá trị âm để thay thế:
SELECT TODATETIMEOFFSET( '2112-01-01 00:00:00', '-08:00' ) AS Result;
Kết quả:
Result ---------------------------------- 2112-01-01 00:00:00.0000000 -08:00
Ví dụ 3 - Sử dụng biến datetime2
Trong ví dụ này, tôi đặt một biến rõ ràng bằng datetime2 giá trị, sau đó áp dụng TODATETIMEOFFSET()
với giá trị đó và so sánh các giá trị:
DECLARE @date datetime2 = '2112-01-01 00:00:00.0000000'; SELECT @date AS 'Original Date', TODATETIMEOFFSET( @date, '+08:00' ) AS '+08:00';
Kết quả:
Original Date +08:00 --------------------------- ---------------------------------- 2112-01-01 00:00:00.0000000 2112-01-01 00:00:00.0000000 +08:00
Như chúng ta có thể thấy với ví dụ này (và những ví dụ trước đó), giá trị ngày ban đầu không có bất kỳ ngày giờ nào thông tin bù đắp (vì đó là datetime2 value), nhưng khi chúng tôi chạy nó qua TODATETIMEOFFSET()
, chúng tôi kết thúc với một bộ datetimeoffset kiểu dữ liệu.
Ví dụ 4 - Sử dụng biến datetimeoffset
Điều này tương tự với ví dụ trước, ngoại trừ ngày ban đầu được đặt là datetimeoffset giá trị:
DECLARE @date datetimeoffset = '2112-01-01 00:00:00.0000000 +04:00'; SELECT @date AS 'Original Date', TODATETIMEOFFSET( @date, '+08:00' ) AS '+08:00';
Kết quả:
Original Date +08:00 ---------------------------------- ---------------------------------- 2112-01-01 00:00:00.0000000 +04:00 2112-01-01 00:00:00.0000000 +08:00
Ví dụ 5 - Sử dụng Ngày / Giờ Hiện tại
Trong ví dụ này, tôi nhập SYSDATETIMEOFFSET()
chức năng như biểu thức ngày tháng. Hàm này tạo ngày / giờ hiện tại của máy tính đang chạy phiên bản SQL Server:
SELECT SYSDATETIMEOFFSET() AS 'Current Date', TODATETIMEOFFSET( SYSDATETIMEOFFSET(), '+08:00' ) AS '+08:00';
Kết quả:
Current Date +08:00 ---------------------------------- ---------------------------------- 2018-06-06 08:50:57.8382284 +10:00 2018-06-06 08:50:57.8382284 +08:00
Ví dụ 6 - Cung cấp Chênh lệch múi giờ dưới dạng số nguyên
Như đã đề cập, bạn cũng có thể cung cấp độ lệch múi giờ dưới dạng số nguyên thay vì chuỗi:
SELECT TODATETIMEOFFSET( '2112-01-01 00:00:00', -180 ) AS Result;
Kết quả:
Result ---------------------------------- 2112-01-01 00:00:00.0000000 -03:00