我的数据库应用程序将部署在不同时区的多个站点。
我需要一个 T-SQL 函数来确定当年 1 月 1 日午夜的 UTC 时间戳,以进行 YTD 计算。所有数据都存储在 UTC 时间戳中。
例如,芝加哥采用 UTC-6 夏令时 (DST),如果该函数在 2008 年芝加哥的任何时间运行,则需要返回“2008-01-01 06:00:00”。如果明年在纽约(GMT-5 + DST)运行,则需要返回 '2009-01-01 05:00:00'。
我可以从YEAR(GETDATE())
获取当前年份。我想我可以在 GETDATE()
和 GETUTCDATE()
之间执行 DATEDIFF
来确定偏移量,但结果取决于查询是否运行是否在 DST 期间。我不知道有任何内置的 T-SQL 函数用于确定偏移量或当前时间是否为 DST?
有人能用 T-SQL 解决这个问题吗?我可以对其进行硬编码或将其存储在表中,但我不想这样做。我认为这是在 SQL Server 2005 中使用 CLR 集成的完美情况。我只是想知道是否有一个我不知道的 T-SQL 解决方案?
最佳答案
查看之前的问题和答案以获取相关信息:
Effectively Converting dates between UTC and Local (ie. PST) time in SQL 2005
(总而言之,您确实需要在 Sql Server 2005 中构建时区和 DST 表。在 Sql Server 的下一版本中,我们将获得一些有关时区的帮助。)
关于sql - 确定 T-SQL 中的时区偏移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/180638/