web-dev-qa-db-ja.com

SQLでDateTimeに時間を追加する方法

SQL Server 2008 R2のdatetimeにカスタム時刻を追加するを試みています。

以下は私が試したものです。

SELECT DATEADD(hh, 03, DATEADD(mi, 30, DATEADD(ss, 00, DATEDIFF(dd, 0,GETDATE())))) as Customtime

上記のクエリを使用して、私はそれを達成することができます。

しかし、カスタム時間をdatetimeに追加するためにすでに利用可能な短縮方法はありますか?

30
Praveen

これを試して

SELECT DATEADD(day, DATEDIFF(day, 0, GETDATE()), '03:30:00')
41

私にとって、このコードはより明確に見えます:

CAST(@SomeDate AS datetime) + CAST(@SomeTime AS datetime)
22
Misha

これを試して:

SELECT  DATEDIFF(dd, 0,GETDATE()) + CONVERT(DATETIME,'03:30:00.000')
17
Andrey Gordeev

これを試して

SELECT DATEADD(MINUTE,HOW_MANY_MINUTES,TO_WHICH_TIME)

ここで、MINUTEは定数であり、TO_WHICH_TIME指定子から分を加算/減算することを示します。 HOW_MANY_MINUTESは、分を追加する必要がある間隔です。負の値が指定されている場合、時間は減算され、そうでない場合はTO_WHICH_TIME指定子に追加され、TO_WHICH_TIMEMINUTEを追加しています。

お役に立てれば。

5
Mohan

または、Timeデータ型を使用して別の方法を試してください。

DECLARE @MyTime TIME = '03:30:00', @MyDay DATETIME = CAST(GETDATE() AS DATE)

SELECT @MyDay+@MyTime
4
Steve D

できるよ:

SELECT GETDATE()+'03:30:00'
2
Neket

以下はシンプルで、SQL Server 2008(SP3)以降で動作します。

PRINT @@VERSION
PRINT GETDATE()
PRINT GETDATE() + '01:00:00'
PRINT CONVERT(datetime,FLOOR(CONVERT(float,GETDATE()))) + '01:00:00'

出力あり:

Microsoft SQL Server 2008 (SP3) - 10.0.5500.0 (X64) 
Mar 15 2017  6:17PM
Mar 15 2017  7:17PM
Mar 15 2017  1:00AM
0