我想从 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 的索引,并且每个查询都将使用扫描索引。
使用 datetime 列,查询应该是:
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())