0

我一直试图让这项工作在两天内仍然卡住。任何援助或提示将不胜感激。使用具有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 

我怎么能改变这显示正确的当地时间?

谢谢

+0

什么是这里的问题?您没有包含程序的完整代码,您遇到的问题或您期望的结果。 – iamdave

+0

我想将UTC转换为本地时间。抱歉。我只是不知道如何改变功能,以显示结算日期为本地时间而不是UTC时间。 – user3571153

+0

该函数看起来像传递日期时间值,然后将其转换为时区。如果没有看到函数中的代码(这里你没有提供),我们将无法帮助你。 – iamdave

回答

1

您的日期转换具体返回天数的差异。 dateadd将日期0(实际上是01-01-1900)与您的UTC日期之间的天数加到不同的日期0。这意味着小时和分钟完全被忽略。

如果你想包括小时和分钟你只需要删除dateadd(...datediff(部分:

RETURN DATEADD(hh, @diff, @UTCDateTime)

相关问题