我在SQL Server中有一个查询,我想每周运行一次,显示过去7天的数据。
我尝试使用:
SELECT something FROM tbl_name
WHERE DATE_SUB(CURDATE(),INTERVAL 7 DAY) <= date_col;
但是,上面的代码是针对MYSQL的,但是我安装了SQL Server,我想知道是否有人有这个问题的解决方案。
答案 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)
也有效。