1

日付の最後の発生を見つける必要があります (私の場合、静的な日付は 5 月 1 日です)。

私はこれを機能させましたが、これはもっとスマートな方法で実行できることを知っています

declare @lastmay date
set @lastmay = DATEADD(YY,YEAR(GETDATE())-2000,'20000501')
IF @lastmay <= GETDATE()
BEGIN
    SET @lastmay = DATEADD(YY,-1,@lastmay)
END
4

1 に答える 1

0

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()
于 2011-05-23T23:13:00.877 に答える