2013-02-24 11 views
17

Trong SQL Server tôi cần phải tìm bù đắp của một datetimeoffset(7) nhất định.Nhận bù đắp của datetimeoffset trong SQL Server

Tôi đã nghiên cứu tài liệu và có tất cả các cách để thay đổi bù trừ nhưng không phải là cách để biết giá trị bù trừ của một giá trị cụ thể (xin lỗi nếu tôi bỏ qua).

Tôi đã đưa ra đoạn mã sau mà tôi thấy quá phức tạp mặc dù dường như hoạt động.

DECLARE @datetimeOffset datetimeoffset(7) 

SET @datetimeOffset = CAST('2007-05-08 22:35:29.1234567-05:00' AS datetimeoffset(7)) 

DECLARE @result datetimeoffset(7) 
DECLARE @offsetMin int 

SET @offsetMin = DATEDIFF(mi, cast(SWITCHOFFSET(@datetimeOffset, '+00:00') as datetime), cast(@datetimeOffset as datetime)) 

SELECT @offsetMin 

Tôi vẫn phải chuyển đổi sang định dạng: 00: 00 nhưng muốn kiểm tra xem có cách nào tốt hơn để thực hiện việc này hay không.

Cảm ơn!

Trả lời

30

Chức năng ngày tháng có tùy chọn tz là chênh lệch múi giờ tính bằng phút.

datepart(tz,@datetimeoffset) 
+6

Bạn cũng có thể nhận được DATENAME (tz, @datetimeoffset) để nhận bù đắp dưới dạng varchar. –

+4

'TZOFFSET' hoạt động thay cho' tz' và, đối với giá trị của nó, được công nhận bởi công cụ đánh dấu cú pháp SSMS. –

+0

Tính năng này chỉ hoạt động trong SSMS 2012+ – codeMonkey