0

私はこの作業を2日間でやろうとしていましたが、依然として固執しています。どんな援助やヒントも高く評価されます。日付変換する機能を作成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

この関数は、datetime値を渡してから、それを変換したいタイムゾーンに渡すように見えます。関数(ここでは提供していない)のコードを見ることなく、私たちはあなたを助けることができません。 – iamdave

答えて

1

はあなたの日付変換は、特に日中の違いを返しています。 dateaddは、日付0(実際には01-01-1900)とUTCの日付との間の日数を別の日付0に追加します。つまり、時間と分は完全に無視されます。

あなたはあなただけのdateadd(...datediff(一部をドロップする必要があり、時間と分を含める場合:

RETURN DATEADD(hh, @diff, @UTCDateTime)

関連する問題