我的数据库中的一些表中有一些列,这些列全部位于本地化服务器日期时间值中。我想将这些全部转换为 UTC DateTime 值(不需要是 DateTime2,因为假定新值采用 UTC)。
我想在单个 SQL 语句中完成此操作。我不完全确定如何执行此操作,因为我没有在数据库上花费大量时间。
可以假设我的表名称为 TestTable,本地化的 DateTime 列名为 TestDateTime。
我希望脚本对表进行更新以及转换。
有什么办法可以做到这一点吗?
最佳答案
您可以用 getdate()
减去 getutcdate()
来找出差异:
select DateAdd(s,DateDiff(s, getdate(),getutcdate()), LocalizedDateColumn)
这假设您与尝试转换的时间处于相同的夏令时/冬令时状态。虽然不理想,但这是我所知道的可以在纯 SQL 中完成的最佳转换。
C# 客户端的转换能力更强:
yourDateTime.ToUniversalTime()
与 SQL 版本不同,.NET 版本将在夏季正确转换冬季日期。
关于Sql Server 2008 - 将本地化日期时间列转换为 UTC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6459502/