日付が過去3か月のデータを選択する手助けが必要です。 (注:過去3か月、つまりDATEADD(MONTH, -3, GETDATE())
は求めていません)
DATEADDメソッドを使用したくない理由は、このクエリが月の途中で実行される可能性があり、その時点までのデータを返さないようにするためです。
この方法を使用して、3か月前の最初の日と前月の最終日を決定できます。
select DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE())-3, 0) --First day of 3 months ago
select DATEADD(MONTH, DATEDIFF(MONTH, -1, GETDATE())-1, -1) --Last Day of previous month
次に、それをwhere
句で使用します。
declare @start date = DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE())-3, 0)
declare @end date = DATEADD(MONTH, DATEDIFF(MONTH, -1, GETDATE())-1, -1)
select *
from table
where dateField between @start and @end
dateField
がdatetime
の場合は、秒を追加するか、日を追加して<
オペランドを使用するだけで、最終日を見逃さないようにする必要があります
declare @start date = DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE())-3, 0)
declare @end date = DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()), 0) --First day of current month
select *
from table
where dateField >=@start and dateField < @end