使用具有Select语句的标量值函数将UTC时间更改为本地时间SQL
问题描述:
我一直试图让这项工作在两天内仍然卡住。任何援助或提示将不胜感激。使用具有Select语句的标量值函数将UTC时间更改为本地时间SQL
创建函数的日期转换:
CREATE FUNCTION LocalDateFromUTCTime
(
@UTCDateTime datetime
)
RETURNS datetime
BEGIN
DECLARE @diff int;
SET @diff = datediff(hh,GetUTCDate(), GetDate());
RETURN DATEADD(day, DATEDIFF(day, 0, DATEADD(hh, @diff, @UTCDateTime)),0);
END
然后选择我想上面的函数中使用SQL语句低于:
SELECT
o.Number AS 'Order#',
o.[guid] as 'guid',
dbo.LocalDateFromUTCTime(o.settlementdate) as 'closing date'
FROM pf.order o
这样显示的结算日期没有时间戳。
2015-07-15 00:00:00.000
我怎么能改变这显示正确的当地时间?
谢谢
答
您的日期转换具体返回天数的差异。 dateadd
将日期0
(实际上是01-01-1900
)与您的UTC日期之间的天数加到不同的日期0
。这意味着小时和分钟完全被忽略。
如果你想包括小时和分钟你只需要删除dateadd(...datediff(
部分:
RETURN DATEADD(hh, @diff, @UTCDateTime)
什么是这里的问题?您没有包含程序的完整代码,您遇到的问题或您期望的结果。 – iamdave
我想将UTC转换为本地时间。抱歉。我只是不知道如何改变功能,以显示结算日期为本地时间而不是UTC时间。 – user3571153
该函数看起来像传递日期时间值,然后将其转换为时区。如果没有看到函数中的代码(这里你没有提供),我们将无法帮助你。 – iamdave