SQL Server のテーブルから過去 3 か月の日付をすべて選択したいと考えています。
データは次のようになります。
Sunday 20-05-2012
Sunday 27-05-2012
Sunday 10-06-2012
Sunday 24-06-2012
Sunday 08-07-2012
Sunday 22-07-2012
Sunday 12-08-2012
Sunday 19-08-2012
Sunday 09-09-2012
Sunday 16-09-2012
SQL Server のテーブルから過去 3 か月の日付をすべて選択したいと考えています。
データは次のようになります。
Sunday 20-05-2012
Sunday 27-05-2012
Sunday 10-06-2012
Sunday 24-06-2012
Sunday 08-07-2012
Sunday 22-07-2012
Sunday 12-08-2012
Sunday 19-08-2012
Sunday 09-09-2012
Sunday 16-09-2012
日付列を曜日とともにvarcharとして保存する-悪い考えです。where句で使用するには、フィールドを常に変換する必要があるため、より高速なクエリを作成することはできません。また、クエリはdate_columnのインデックスを使用できず、各クエリはスキャンインデックスを使用します。
日時列の場合、クエリは次のようになります。
select date_column
from table_name
where date_column between dateadd(m, -3, getdate()) and getdate()
このクエリを使用してみてください:
select date_column from table_name
where datepart(m,date_column) > datepart(m,getdate())-3 and datepart(yy,date_column) >= datepart(yy,getdate())