Sql Server 2008 - 将本地化日期时间列转换为 UTC

标签 sql sql-server sql-server-2008 localization utc

我的数据库中的一些表中有一些列,这些列全部位于本地化服务器日期时间值中。我想将这些全部转换为 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/

相关文章:

mysql - 连接返回错误结果的表

java - 将 Swing 中的 JTextArea 存储在 Access 2007 数据库中

sql - 在 msdb.dbo.sysssispackages XML 中查询特定值

sql-server - WHERE 子句运算符需要兼容的变量

sql - 创建表时的条件输入

sql - 查询每组中的前 2 个

sql - 使用 SQL 将行转换为列

SQL:多对多关系,IN条件

mysql - 按其他列排序后选择最上面的非重复条目

java - 使用 hibernate 标准查询 CLOB 列