如何在WHERE子句中添加日期范围?

时间:2014-05-27 03:39:24

标签: sql sql-server

我在SQL Server中有一个查询,我想每周运行一次,显示过去7天的数据。

我尝试使用:

SELECT something FROM tbl_name
WHERE DATE_SUB(CURDATE(),INTERVAL 7 DAY) <= date_col;

但是,上面的代码是针对MYSQL的,但是我安装了SQL Server,我想知道是否有人有这个问题的解决方案。

1 个答案:

答案 0 :(得分:2)

试试这个:

SELECT something
FROM tbl_name
WHERE date_col >= dateadd(day, -7, getdate());

如果您想确保删除时间组件(由CURDATE()建议):

SELECT something
FROM tbl_name
WHERE date_col >= cast(dateadd(day, -7, getdate()) as date);

编辑:

您评论中问题的答案是:

SELECT something
FROM tbl_name
WHERE date_col >= cast(dateadd(day, -7, getdate()) as date) and
      date_col < cast(dateadd(day, 1, getdate()) as date);

注意第二个条件是<,而不是<=。如果date_col没有时间组件,则:

WHERE date_col >= cast(dateadd(day, -7, getdate()) as date) and
      date_col <= cast(getdate() as date)

也有效。