【发布时间】:2015-09-09 20:01:31
【问题描述】:
在我的 SQL Server 2008 R2 数据库中,我有一个 LastHWScan 列 (datetime) 和一个 TimzoneOffset 列 (int)。
LastHWScan 列存储正在扫描的工作站本地的datetime。 TimezoneOffset 列将时区偏移存储为正数或负数分钟数。达拉斯是 -300,布加勒斯特是 180。
如何在 SQL 查询中将这些 datetime 从各个时区转换为达拉斯时间?
将所有内容都转换为 UTC,然后再转换为达拉斯时间会更容易吗?
【问题讨论】:
-
我想出了如何在 Excel 中做到这一点,并且我已经接近在 TSQL 中重现该过程,但我还没有完全做到。我正在做 DATEADD(minute,((-300 - W.TimezoneOffset) * (-1 * SIGN(W.TimezoneOffset))), W.LastHWSCan。我在 excel 中通过反复试验确定的标志的业务。如果两个时区偏移的符号不一样,我需要更改分钟数的符号来调整时间。这在 excel 中有效,但在 SQL 中并非在所有情况下都有效。
标签: sql-server tsql datetime timezone