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

发布于 2024-11-16 16:03:45 字数 268 浏览 2 评论 0原文

我的数据库中的一些表中有一些列,这些列全部位于本地化服务器日期时间值中。我想将这些全部转换为 UTC DateTime 值(不需要是 DateTime2,因为假定新值采用 UTC)。

我想在单个 SQL 语句中完成此操作。我不完全确定如何执行此操作,因为我没有在数据库上花费大量时间。

可以假设我的表名称为 TestTable,本地化的 DateTime 列名为 TestDateTime。

我希望脚本能够对表进行更新以及转换。

有什么办法可以做到这一点吗?

I have some columns in a few tables in my database that are all in the localized server DateTime values. I want to convert these all to UTC DateTime values (does not need to be DateTime2 since it will be assumed the new values will be in UTC).

I would like to do this in a single SQL statement. I am not entirely sure how to perform this as I do not spend a lot of time in the database.

Assumptions can be made that my table name is TestTable and my localized DateTime column is called TestDateTime.

I would want the script to do the update to the table as well as the conversion.

Any way to possibly do this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

只是我以为 2024-11-23 16:03:45

您可以从 getdate() 中减去 getutcdate() 来找出差异:

select  DateAdd(s,DateDiff(s, getdate(),getutcdate()), LocalizedDateColumn)

这假设您与尝试转换的时间处于相同的夏令时/冬令时状态。虽然不理想,但这是我所知道的可以在纯 SQL 中完成的最佳转换。

AC# 客户端具有更强的转换功能:

yourDateTime.ToUniversalTime()

与 SQL 版本不同,.NET 版本将在夏季正确转换冬季日期。

You can substract getutcdate() from getdate() to find the difference:

select  DateAdd(s,DateDiff(s, getdate(),getutcdate()), LocalizedDateColumn)

This assumes you are in the same summertime/wintertime state as the time you're trying to convert. Not ideal, but the best conversion I know of that you can do in pure SQL.

A C# client has a much stronger conversion:

yourDateTime.ToUniversalTime()

Unlike the SQL version, the .NET version will correctly convert a wintertime date during the summer.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文