多くの日付のレコードを含むテーブルがあります。日付の月の最終日に該当するレコードのみを返すクエリを実行したいと考えています。何かのようなもの:
SELECT * FROM mytable
WHERE DATEPART(d, mytable.rdate) = DATEPART(d,DATEADD(m,1,DATEADD(d, -1, mytable.rdate)))
が正しい比較を返すrdate
ためには、引数の右側にある がその月の最終日でなければならないため、これは機能しません。dateadd
基本的に、この比較を行う簡潔な方法はありますか? 四半期末に相当するものも非常に役立ちますが、間違いなくもっと複雑です。
編集:
基本的に、特定の日付が該当する月 (または四半期) の最後の日付であるかどうかを確認したいと考えています。そうであれば、そのレコードを返します。これには、任意の日付の月の最後の日を返す関数が含まれます。例lastdayofmonth('2013-06-10') = 30
(したがって、このレコードは返されません。
EDIT2:
四半期の最終日に該当するレコードを返す場合は、次のようにする必要があります。
SELECT * FROM mytable
WHERE DATEPART('d', mytable.rdate) = lastdayofmonth(mytable.rdate)
AND DATEPART('m', mytable.rdate) = lastmonthofquarter(mytable.rdate);
トリッキーなビットはlastdayofmonth()
andlastmonthofquarter()
関数です