5

SQLServer2012でT-SQLを使用timeして既存の値に値を追加する必要があります。datetime

DATEADD関数は解決策かもしれないと思っていましたが、そうではありません...

おそらく私はどういうわけかtimeに変換していdatetimeますか?

ので、私は持っています

StartDate 2013-02-18 18:34:40.330(日時)

間隔00:11:00.0000000(時間)

終了日 ?tsql?(日付時刻)

どんな手掛かり?

4

3 に答える 3

22
DECLARE @d DATETIME = '2013-02-18T18:34:40.330',
        @t TIME(7)  = '00:11:00.0000000';

SELECT EndDate = DATEADD(SECOND, DATEDIFF(SECOND, 0, @t), @d);

結果:

EndDate
-----------------------
2013-02-18 18:45:40.330

さて、間隔time列に格納するべきではありません。期間ではなく、ある時点timeを表すことを意図しています。間隔が 24 時間以上の場合はどうなりますか? イベントの開始時刻と終了時刻を保存する必要があり (これらは通常、少なくとも期間と同じくらい関連性があります)、これらのポイントからいつでも期間を計算できます。

于 2013-03-05T16:06:42.830 に答える
8

このようなことを試してください。注:ここではミリ秒を使用していません

declare @dt datetime = getdate()
declare @t time = '01:35:45'

select dateadd(second, 
                  datepart(hour,@t) * 3600 + 
                  datepart(minute,@t) * 60 + 
                  datepart(second,@t),
                  @dt)
于 2013-03-05T15:56:38.630 に答える