【发布时间】:2016-04-16 09:22:21
【问题描述】:
我想将一列 UTC 时间转换为本地时间。
我的数据如下所示:
time_utc TZID timezone
------------------------------------------------
2014-02-27 12:00:39.0 America/Toronto -5
2013-05-21 09:35:30.0 America/Goose_Bay -4
2015-01-08 06:58:58.0 America/Creston -7
我知道使用
select *, DATEADD(hour, 5,time_utc)
from mytable
将在time_utc 列中增加 5 小时。
但是,如您所见,我有一个可变时区列。
如何将此变量传递给dateadd 函数?
我尝试了以下 2 个命令,但它们不起作用:
尝试 #1:
select *, DATEADD(hour, timezone, time_utc)
from mytable
尝试 #2:
select *, DATEADD(hour, (select timezone from mytable), time_utc)
from mytable
两者都抛出这个错误:
参数数据类型 varchar 对于 dateadd 函数的参数 2 无效。 [SQL 状态=S0001,数据库错误代码=8116]
对于时区的十进制值,例如 -3.5,这将如何工作?
谢谢
【问题讨论】:
-
考虑将
timezone的数据类型更改为varchar。
标签: sql sql-server tsql parameter-passing dateadd