日付の最後の発生を見つける必要があります (私の場合、静的な日付は 5 月 1 日です)。
私はこれを機能させましたが、これはもっとスマートな方法で実行できることを知っています
declare @lastmay date
set @lastmay = DATEADD(YY,YEAR(GETDATE())-2000,'20000501')
IF @lastmay <= GETDATE()
BEGIN
SET @lastmay = DATEADD(YY,-1,@lastmay)
END
日付の最後の発生を見つける必要があります (私の場合、静的な日付は 5 月 1 日です)。
私はこれを機能させましたが、これはもっとスマートな方法で実行できることを知っています
declare @lastmay date
set @lastmay = DATEADD(YY,YEAR(GETDATE())-2000,'20000501')
IF @lastmay <= GETDATE()
BEGIN
SET @lastmay = DATEADD(YY,-1,@lastmay)
END
SQL で日付を扱う場合、データベースに Dates ユーティリティ テーブルを用意して比較すると非常に便利です。
この記事では、それについて詳しく説明しています: http://www.techrepublic.com/blog/datacenter/simplify-sql-server-2005-queries-with-a-dates-table/326
(記事の列を使用して) のように、クエリが非常に単純になるように実装した場合
Declare @lastmay date
Select @lastmay = DateFull
from DateLookup
where MonthNumber = 5
and MonthDay = 1
and Datefull < getdate()