Trong SQL Server, SWITCHOFFSET()
có thể được sử dụng để trả về bộ datetimeoffs giá trị được thay đổi từ độ lệch múi giờ được lưu trữ thành độ lệch múi giờ mới được chỉ định.
Dưới đây là các ví dụ về cách hoạt động của chức năng này.
Cú pháp
Đầu tiên, đây là cách thực hiện cú pháp:
SWITCHOFFSET ( DATETIMEOFFSET, time_zone )
Ở đâu DATETIMEOFFSET
là một biểu thức có thể được giải quyết thành datetimeoffset (n) giá trị và time_zone
là một chuỗi ký tự có định dạng [+ | -] TZH:TZM hoặc một số nguyên có dấu (phút) đại diện cho độ lệch múi giờ và được giả định là nhận biết và điều chỉnh tiết kiệm ánh sáng ban ngày.
Kết quả được trả về dưới dạng bộ datetimeoffs với độ chính xác phân số của DATETIMEOFFSET
đối số.
Ví dụ 1
Dưới đây là một ví dụ cơ bản về cách sử dụng:
SELECT SWITCHOFFSET( '2112-01-01', '+08:00' ) AS Result;
Kết quả:
Result ---------------------------------- 2112-01-01 08:00:00.0000000 +08:00
Ví dụ 2
Ví dụ này sử dụng giá trị âm:
SELECT SWITCHOFFSET( '2112-01-01', '-08:00' ) AS Result;
Kết quả:
Result ---------------------------------- 2111-12-31 16:00:00.0000000 -08:00
Ví dụ 4
Trong ví dụ này, chúng tôi khai báo một biến và chỉ định ngày cho nó bằng cách sử dụng datetimeoffset loại dữ liệu. Sau đó, chúng tôi áp dụng SWITCHOFFSET()
đến ngày đó và so sánh với ngày ban đầu.
DECLARE @date datetimeoffset = '2112-01-01 00:00:00.0000000 +04:00'; SELECT @date AS 'Original Date', SWITCHOFFSET( @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 04:00:00.0000000 +08:00
Ví dụ 5
Ở đây chúng ta làm tương tự như ví dụ trước, nhưng chúng ta sử dụng SYSDATETIMEOFFSET()
chức năng tạo ngày / giờ hiện tại và bù đắp.
SELECT SYSDATETIMEOFFSET() AS 'Current Date', SWITCHOFFSET( SYSDATETIMEOFFSET(), '+08:00' ) AS '+08:00';
Kết quả:
Current Date +08:00 ---------------------------------- ---------------------------------- 2018-06-05 17:05:36.9415309 +10:00 2018-06-05 15:05:36.9415309 +08:00
Ví dụ 6
Ví dụ này giống với ví dụ trước, ngoại trừ chúng tôi thêm một giá trị âm.
SELECT SYSDATETIMEOFFSET() AS 'Current Date', SWITCHOFFSET( SYSDATETIMEOFFSET(), '-08:00' ) AS '-08:00';
Kết quả:
Current Date -08:00 ---------------------------------- ---------------------------------- 2018-06-05 17:12:07.1122856 +10:00 2018-06-04 23:12:07.1122856 -08:00
Ví dụ 7
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 SWITCHOFFSET( '2112-01-01', -180 ) AS Result;
Kết quả:
Result ---------------------------------- 2111-12-31 21:00:00.0000000 -03:00