SQL输出在使用转换日期时仅获得最近7天的输出

时间:2013-10-17 15:23:15

标签: sql sql-server tsql

我使用下面的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天的数据。

3 个答案:

答案 0 :(得分:9)

而不是将date转换为varchar并将varcharvarchar进行比较。将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())