【发布时间】:2020-11-02 21:02:07
【问题描述】:
Order 表包含OrderDate 和OfficeNum 以及其他列,而Office 表包含时区相关列TimeZone 和UseDST 除了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