如何在SQL Server中选择最近三个月的所有日期

时间:2012-09-28 10:27:56

标签: sql-server date

我想从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

2 个答案:

答案 0 :(得分:4)

将日期列保存为varchar与星期几 - 糟糕的主意。您无法编写更快的查询,因为您必须将您的字段的所有时间转换为在where子句中使用它。此外,您的查询不能使用date_column的索引,每个查询都将使用扫描索引。

使用datetime列,查询应为:

select date_column
  from table_name
 where date_column between dateadd(m, -3, getdate()) and getdate()

答案 1 :(得分:1)

尝试使用此查询:

select date_column from table_name
where datepart(m,date_column) > datepart(m,getdate())-3 and datepart(yy,date_column) >= datepart(yy,getdate())