SQL Server 2008中的时间比较

5

如何在SQL Server 2008中比较印度时间和世界其他国家的时间?

我的意思是,如果在印度是午夜1点,那么在其他国家的时间是多少,通过SQL Server 2008来查询。


你能提供一下你将如何使用和/或访问这些信息的背景吗?你是对多个SQL服务器之间的时区差异感兴趣,还是只是想查找地理位置的时间偏移量的方法? - Ed Harper
3个回答

2

看一下SYSUTCDATETIME()

SELECT SYSDATETIME(), SYSUTCDATETIME();

使用协调世界时(UTC),您可以轻松计算任何其他国家的时间。


2
SQL Server 2008使用DateTimeOffset类型表示带有时区偏移的日期时间。
您可以使用SWITCHOFFSET函数将一个时区的值转换为另一个时区的值。
要从现有的日期值创建特定时区的DateTimeOffset值,请使用TODATETIMEOFFSET
您可以使用SYSDATETIMEOFFSET获取包括偏移量在内的当前日期和时间。
最后,您可以使用普通的DATEDIFF比较DateTimeOffset值并获取它们之间的差异。
要获取印度的当前时间并将其切换到另一个时区,您需要知道正确的时间偏移量。语句可能类似于:
DECLARE @localTime DATETIMEOFFSET=SYSDATETIMEOFFSET()
SELECT @localTime, SWITCHOFFSET(@localTime,'-5:00')

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

SELECT DATEADD(hour, @timeZoneOffset, @indianTime)

请参阅下一篇MSDN文章:12

但最好使用支持时区的SQL Server 2008和DateTimeOffset类型。

因此,您可以执行以下操作:

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

SELECT SWITCHOFFSET(@indianTime, @timeZoneOffset)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接