2010-07-22 91 views
5

Làm thế nào để so sánh thời gian Ấn Độ với các quốc gia khác trên thế giới trong SQL Server 2008?So sánh thời gian trong SQL Server 2008

Phương tiện tôi muốn biết nếu ở Ấn Độ vào giữa đêm 01:00 nó những gì sẽ là thời gian ở các nước khác thông qua SQL Server 2008

+0

Bạn có thể đưa ra bối cảnh về cách bạn sẽ sử dụng và/hoặc truy cập thông tin này không? Bạn có quan tâm đến chênh lệch múi giờ giữa nhiều máy chủ SQL hay chỉ đơn giản là một cách để tìm thời gian bù đắp cho một vị trí địa lý? –

Trả lời

0
DECLARE @indianTime DATETIME = GETDATE() 
DECLARE @timeZoneOffset SMALLINT = 3 -- or -3 

SELECT DATEADD(hour, @timeZoneOffset, @indianTime) 

Xem tiếp bài viết MSDN: 1, 2


Nhưng tốt hơn là sử dụng SQL Server 2008 và DateTimeOffset loại hỗ trợ múi giờ.

Vì vậy, bạn có thể làm tiếp theo:

DECLARE @indianTime DATETIME = SYSDATETIMEOFFSET() 
DECLARE @timeZoneOffset NVARCHAR(6) = '-03:00' 

SELECT SWITCHOFFSET(@indianTime, @timeZoneOffset) 
2

Có một cái nhìn tại SYSUTCDATETIME():

SELECT SYSDATETIME(), SYSUTCDATETIME(); 

Với UTC Thời gian bạn có thể dễ dàng tính toán thời gian trong bất kỳ nước nào khác.

2

SQL Server 2008 sử dụng loại DateTimeOffset để đại diện cho Ngày giờ với chênh lệch múi giờ.

Bạn có thể chuyển đổi các giá trị từ một múi giờ này sang múi giờ khác bằng cách sử dụng chức năng SWITCHOFFSET.

Để tạo giá trị DateTimeOffset cho một múi giờ cụ thể từ các giá trị ngày hiện tại, hãy sử dụng TODATETIMEOFFSET.

Bạn có thể nhận ngày và giờ hiện tại bao gồm chênh lệch bằng cách sử dụng SYSDATETIMEOFFSET.

Cuối cùng, bạn có thể sử dụng số DATEDIFF đơn giản để so sánh các giá trị DateTimeOffset và nhận được sự khác biệt của chúng.

Để nhận thời gian hiện tại của bạn ở Ấn Độ và chuyển sang múi giờ khác, bạn phải biết khoảng thời gian phù hợp. Tuyên bố sẽ là một cái gì đó như

DECLARE @localTime DATETIMEOFFSET=SYSDATETIMEOFFSET() 
SELECT @localTime, SWITCHOFFSET(@localTime,'-5:00') 
Các vấn đề liên quan