gpt4 book ai didi

sql-server - 在 SQL 2005 中有效地在 UTC 和本地(即 PST)时间之间转换日期

转载 作者:行者123 更新时间:2023-12-01 19:40:48 25 4
gpt4 key购买 nike

将 UTC 日期时间转换为本地日期时间的最佳方法是什么。它不像 getutcdate() 和 getdate() 差异那么简单,因为差异会根据日期而变化。

CLR 集成也不适合我。

几个月前我针对这个问题提出的解决方案是建立一个夏令时表,存储 future 100 年左右夏令时的开始和结束时间,这个解决方案看起来不太优雅,但转换是快速(简单的查表)

最佳答案

创建两个表,然后连接到它们以将存储的 GMT 日期转换为本地时间:

TimeZones     e.g.
--------- ----
TimeZoneId 19
Name Eastern (GMT -5)
Offset -5

创建夏令时表并在其中填充尽可能多的信息(本地法律一直在变化,因此无法预测 future 几年数据会是什么样子)

DaylightSavings
---------------
TimeZoneId 19
BeginDst 3/9/2008 2:00 AM
EndDst 11/2/2008 2:00 AM

像这样加入他们:

inner join  TimeZones       tz on x.TimeZoneId=tz.TimeZoneId
left join DaylightSavings ds on tz.TimeZoneId=ds.LocalTimeZone
and x.TheDateToConvert between ds.BeginDst and ds.EndDst

像这样转换日期:

dateadd(hh, tz.Offset + 
case when ds.LocalTimeZone is not null
then 1 else 0 end, TheDateToConvert)

关于sql-server - 在 SQL 2005 中有效地在 UTC 和本地(即 PST)时间之间转换日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24797/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com