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)

相關問題