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

ked*_*ath 8 sql t-sql sql-server

我使用下面的SQL查询来获取过去7天表中的数据.

SELECT * 
FROM   emp 
WHERE  date >= (SELECT CONVERT (VARCHAR(10), Getdate() - 6, 101)) 
       AND date <= (SELECT CONVERT (VARCHAR(10), Getdate(), 101)) 
ORDER  BY date 
Run Code Online (Sandbox Code Playgroud)

表中的数据也包含了去年的数据.

问题是我得到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
Run Code Online (Sandbox Code Playgroud)

我不想要2012年份的输出.请建议如何更改查询以获取今年最后7天的数据.

Sec*_*rel 9

而不是将a转换date为a varchar并将a varchar与a 进行比较varchar.转换varchar为a datetime,然后比较那种方式.

SELECT 
    * 
FROM   
    emp 
WHERE   
    convert(datetime, date, 101)  BETWEEN (Getdate() - 6) AND Getdate() 
ORDER BY 
    date 
Run Code Online (Sandbox Code Playgroud)


may*_*lle 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 
Run Code Online (Sandbox Code Playgroud)