我的数据库应用程序将部署在不同时区的多个站点上。
我需要一个T-SQL函数,该函数将确定YTD计算本年1月1日午夜的UTC时间戳。所有数据都存储在UTC时间戳中。
例如,芝加哥是具有夏令时(DST)的UTC-6,如果该功能在2008年的任何时间在芝加哥运行,则该函数需要返回“ 2008-01-01 06:00:00”。如果明年在纽约(GMT-5 + DST)运行,则需要返回“ 2009-01-01 05:00:00”。
我可以从中获取当前年份YEAR(GETDATE())。我以为可以DATEDIFF在GETDATE()和之间GETUTCDATE()确定偏移量,但是结果取决于查询是否在DST期间运行。我不知道有任何内置的T- SQL函数来确定偏移量,或者当前时间是否为DST?
YEAR(GETDATE())
DATEDIFF
GETDATE()
GETUTCDATE()
在T-SQL中,有人可以解决此问题吗?我可以对其进行硬编码或将其存储在表中,但不希望这样做。我想这是在SQL Server 2005中使用CLR集成的理想情况。我只是想知道是否有我不知道的T-SQL解决方案?
(总而言之,您确实需要在Sql Server 2005中构建时区和DST表。在Sql Server的下一版本中,我们将获得有关时区的一些帮助。)