我使用下面的SQL Query来获取过去7天的表中的数据。
SELECT *
FROM emp
WHERE date >= (SELECT CONVERT (VARCHAR(10), Getdate() - 6, 101))
AND date <= (SELECT CONVERT (VARCHAR(10), Getdate(), 101))
ORDER BY date
表格中的数据也包含去年的数据。
问题是我得到的输出日期列为
10/11/2013
10/12/2012
10/12/2013
10/13/2012
10/13/2013
10/14/2012
10/14/2013
10/15/2012
10/15/2013
10/16/2012
10/16/2013
10/17/2012
10/17/2013
我不想要2012
年的输出。请建议如何更改查询以获取今年最后7天的数据。
答案 0 :(得分:9)
而不是将date
转换为varchar
并将varchar
与varchar
进行比较。将varchar
转换为datetime
,然后进行比较。
SELECT
*
FROM
emp
WHERE
convert(datetime, date, 101) BETWEEN (Getdate() - 6) AND Getdate()
ORDER BY
date
答案 1 :(得分:5)
为什么在处理日期时转换为varchar?试试这个:
DECLARE @Now DATETIME = GETDATE();
DECLARE @7DaysAgo DATETIME = DATEADD(day,-7,@Now);
SELECT *
FROM emp
WHERE date BETWEEN @7DaysAgo AND @Now
ORDER BY date
答案 2 :(得分:0)
简单地使用它。
Select columnname
from tablename
WHERE datecolumn> dateadd(day,-7,GETDATE())