当前位置: 首页 > 面试题库 >

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

郎长卿
2023-03-14
问题内容

将UTC日期时间转换为本地日期时间的最佳方法是什么?它不像getutcdate()和getdate()一样简单,因为差异取决于日期是什么。

对我来说,CLR集成也不是一个选择。

我几个月前针对这个问题提出的解决方案是拥有一个日光节约时间表,该表存储了未来100年左右的开始和结束的日光节约时间,该解决方案看起来不算什么,但转换速度很快(简单表查询)


问题答案:

创建两个表,然后加入其中,以将存储的GMT日期转换为本地时间:

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

创建夏令时表并向其填充尽可能多的信息(当地法律一直在变化,因此无法预测未来几年数据将如何变化)

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)


 类似资料:
  • 问题内容: 我使用以下方式将UTC日期存储到数据库中: 然后我要将保存的UTC日期转换为客户的本地时间。 我怎样才能做到这一点? 谢谢 问题答案: 并且都使用服务器除非被覆盖本地时区; 您可以覆盖与一起使用的时区。

  • 问题内容: 从服务器上,我得到了这种格式的datetime变量:它是UTC时间。我想使用JavaScript将其转换为当前用户的浏览器时间。 如何使用JavaScript或jQuery完成此操作? 问题答案: 在将字符串转换为javascript中的日期之前,将’UTC’附加到字符串中:

  • 问题内容: 如何将UTC时间转换为 当地时间 ? 我已经为我需要当地时间的所有国家/地区创建了具有UTC时差的地图。然后,我将该差异作为持续时间添加到当前时间(UTC),并打印结果希望是该特定国家/地区的当地时间。 由于某些原因,结果是错误的。例如,在匈牙利,相差一小时。知道为什么我得到的结果不正确吗? 问题答案: 请记住,操场的时间设置为,因此它正在工作。 正确的方法是使用,这是一个示例:

  • 问题内容: 我有一个毫秒本地本地时间戳,我想将其转换为毫秒本地UTC时间戳。快速浏览一下文档,看起来像这样工作: 有一个更好的方法吗? 问题答案: 使用a 来获取本地纪元处的偏移量,然后将其添加到本地纪元时间戳中。

  • 问题内容: 在我的项目中,我获得了json格式的API响应。我得到这样的UTC时间格式的时间字符串值。 我需要将其更改为本地时间。那就是我们使用此应用程序需要显示当地时间的地方。我该怎么做? 这是我尝试过的一些代码: 假设aDate包含 问题答案: 这是我的尝试: 还要注意上午/下午标记的“ a” …

  • 我想把这个2021年1月20日20:10:14转换成yyyy-MM-dd'T'HH:MM:ss格式。Android系统中的SSS'Z'。目前我正在使用函数,但当我转换为本地格式时,我没有得到原始时间