【问题标题】:SQL Server datetime values expressed as UTC with time zone designatorSQL Server 日期时间值表示为带有时区指示符的 UTC
【发布时间】:2020-11-02 21:02:07
【问题描述】:

Order 表包含OrderDateOfficeNum 以及其他列,而Office 表包含时区相关列TimeZoneUseDST 除了OfficeNum

如何将订单日期表示为带有时区指示符的UTC时间值(在SQL Server 2008+中)?

SELECT OrderNum
      ,ord.OfficeNum
      ,TimeZone
      ,UseDST
      ,OrderDate AS OrderLocalTime
      ,OrderUtcTime = dateadd(hh, -TimeZone + UseDST, OrderDate)
      --need local time expressed as UTC with time zone designator e.g. 2018-08-27T14:45:14-05:00
FROM Orders ord 
JOIN Office ofc ON ord.OfficeNum = ofc.OfficeNum 
WHERE OrderNum = 1

关于如何在 SQL Server 中正确处理 TimeZone 有多个帖子,例如https://dba.stackexchange.com/questions/39421/how-to-handle-timezone-properly-in-sql-server/114628 我的问题是我不需要根据服务器的时区转换服务器上的当前时间值,而是表达时间戳保存在数据库中的值,知道 2 个参数:TimeZone 作为整数(偏移量)和 UseDST,指示是否使用夏令时。

【问题讨论】:

    标签: sql-server


    【解决方案1】:
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-20
    • 1970-01-01
    • 1970-01-01
    • 2022-12-17
    • 1970-01-01
    相关资源
    最近更新 更多