列のあるSQLServerデータベースがありDate
ます。これらの日付はすべて将来の日付です。
2週間以内に近づいてくるすべての日付を見つけるにはどうすればよいですか?基本的に、次の日付の2週間の通知クエリ。
例:今日は8月2日です。クエリは、もしあれば、8月16日(2週間先)の日付を返します。
そして、明日実行された場合、8月16日と8月17日(2週間先)に戻ります。
これは明らかに、レポーティングマネージャー(SSRS)を介して毎日実行されます。何か案は?
ありがとう。
列のあるSQLServerデータベースがありDate
ます。これらの日付はすべて将来の日付です。
2週間以内に近づいてくるすべての日付を見つけるにはどうすればよいですか?基本的に、次の日付の2週間の通知クエリ。
例:今日は8月2日です。クエリは、もしあれば、8月16日(2週間先)の日付を返します。
そして、明日実行された場合、8月16日と8月17日(2週間先)に戻ります。
これは明らかに、レポーティングマネージャー(SSRS)を介して毎日実行されます。何か案は?
ありがとう。
DATEADDを使用できます:
SELECT *
FROM MyTable
WHERE MyDateField BETWEEN GETDATE() AND DATEADD(week, 2, GETDATE())
列がdatetime
の場合は、最初に日付に変換することをお勧めします。そうでない場合、8月1日の12:00にこれを実行すると、8月15日の12:00までのすべてが返されます。次のコードはあなたのためにこれを行います:
SELECT *
FROM MyTable
WHERE CAST(MyDateField AS date) BETWEEN CAST(GETDATE() AS date) AND CAST(DATEADD(week, 2, GETDATE()) AS date)
SELECT * FROM mytable WHERE dateCol BETWEEN DATEADD(dd, 0, DATEDIFF(dd, 0, GETDATE())) AND
DATEADD(s, -1, DATEADD(d, 1, DATEADD(d, DATEDIFF(d, 0, DATEADD(wk, 2, GETDATE())), 0)))
これにより、今日の開始から1日の終わりまでの間に2週間で何でも返されます。
今日から2週間後の1日(00:00:00> 23:59:59)のレコードを返そうとしている場合は、次を使用します。
SELECT * FROM mytable WHERE dateCol BETWEEN DATEADD(dd, 0, DATEDIFF(dd, 0, DATEADD(wk, 2, GETDATE()))) AND
DATEADD(s, -1, DATEADD(d, 1, DATEADD(d, DATEDIFF(d, 0, DATEADD(wk, 2, GETDATE())), 0)))
GETDATE()
開始/終了したい日付に置き換えることができます。