我的数据库应用程序将在不同时区的多个站点部署。
我需要一个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解决方案?