2つの日付の間にあるレコードを返すクエリを作成しようとしています(それぞれTIME形式のカットオフがあります)。例えばLOCAL TIMEデータ型の値をUTC時刻に変換する
:これまでのところ私は、以下の持っている
カットオフ時間03しかしSELECT
T.CustomerName,
T.MoneyToTransfer
FROM dbo.[Transfer] T
WHERE T.CreatedDate BETWEEN '2016-05-10 03:00:00.0000000' AND '2016-05-11 03:00:00.0000000'
:00:00.0000000私は、クエリをフォーマットする必要がどのように考えるかのプレースホルダのみである - TIMEはする必要がありますが、データ型TIMEとして格納された 'Cutoff'フィールドの別のテーブル 'TransferSubscriber'から取得されたものです。問題は、TransferSubscriberテーブルのこのCutoffフィールドが(TIMEデータ型の)LOCAL時間に格納されていることです。私はこのTIMEをUTCに変換し、それを比較のTIME部分のBETWEENステートメント(03:00:00.0000000)に置きます。
私は1つに日付と時刻の変数を連結の問題を有し、次のことを書かれている:
DECLARE @startDate DATE = (SELECT CONVERT(VARCHAR, '2016-07-13', 110))
DECLARE @Cutoff AS TIME(7) = (SELECT TOP 1 S.CutoffTime FROM Subscriber.dbo.TransferSubscriber S WHERE ID = 10)
DECLARE @CutoffUTC TIME = (SELECT DATEADD(second,DATEDIFF(second, GETDATE(), GETUTCDATE()), @Cutoff))
DECLARE @StartDateFinal = @startDate + @CutoffUTC
@StartDateFinalでエラーが発生します:
「オペランドのデータ型日付が追加演算子には無効です。」
ローカルTIMEをUTC時間に変換し、それを使用して2つのDATETIMEフィールドを比較するより良い方法があると確信しています。
助けがあれば助かります。