web-dev-qa-db-ja.com

T-SQLで2つの日付間の日付を確認する

日付が固定日付と現在の日付/時刻の間にあることを確認するストアドプロシージャがあります(GETDATE()を使用):

SELECT
    a, b
FROM myTbl
WHERE
    DATE BETWEEN 'Day start datetime' AND GETDATE()

...例えば :

WHERE
    DATE BETWEEN '2013-09-10 00:00:00.00' AND 'GETDATE()'

どうやってするの?

7
GeoVIP

DATEADD/DATEDIFFのペアの呼び出しは、日付を前の真夜中に切り捨てます:

SELECT a , b
FROM myTbl
WHERE DATE BETWEEN DATEADD(day,DATEDIFF(day,0,GETDATE()),0) and GETDATE()

または、SQL Server 2008以降を使用している場合:

SELECT a , b
FROM myTbl
WHERE DATE BETWEEN CONVERT(date,GETDATE()) and GETDATE()
15

'GETDATE()'は文字列リテラル、GETDATE()T-SQL 関数。

クエリは次のようになります。

SELECT a , b
FROM myTbl
WHERE DATE BETWEEN '2013-09-10 00:00:00.0' and GETDATE()
6
Darren

WHERE DATE BETWEEN '2013-09-10 00:00:00.00' and GETDATE()GETDATE()呼び出しを一重引用符で囲まない)は問題なく機能するはずです。

1
Onkel Toob

得られる Day start date time Getdate()の戻り値をDate型に変換し、以下のようにDatetimeに再度変換します。

select a,b
from myTbl
where [date] between convert(datetime,convert([date], getdate())) 
                 and getdate()
0
Kaf