2016-06-09 47 views
1

我有一個DateTime值需要轉換爲DateTimeOffset的大表。純SQL解決方案將歷史DateTime值轉換爲DateTimeOffset?

我可以通過使用以下語句來執行此操作,該語句保留日期/時間並添加當前時區偏移量。

TODATETIMEOFFSET([StatisticDateUTC], DATENAME(tz, SYSDATETIMEOFFSET())) 

的問題是一些值表示日期年前,一些夏令時,有些沒有,所以它實際上是不正確,將當前在所有這些偏差。其中一些應該有-700的偏移量,一些應該有-800的偏移量。

如果時區對所有的值都是一致的,我怎麼才能得到正確的偏移量?我知道如何在.net中完成這項工作,因爲有一組很好的功能可以完成它,但我需要一個純粹的SQL解決方案,而不需要CLR功能。

回答

2

如果您可以升級到SQL Server 2016或使用Azure SQL數據庫(v12),那麼您可以使用新的AT TIME ZONE函數,該函數與您可能習慣在.NET中使用的TimeZoneInfo.ConvertTime方法非常相似。

否則,請考慮使用標準IANA時區的第三方解決方案,例如我的SQL Server Time Zone Support軟件包。

More on both in this related answer

相關問題