SQL WHERE子句以选择最近7天的数据

时间:2018-11-08 18:00:39

标签: sql tsql sql-server-2012

我想使用SELECT语句在服务器上构建视图并选择最近7天创建的所有记录吗?

原始creation_date字段位于varchar中,就像'18/11/08'一样,我使用CONVERT(datetime, creation_date,11)将其转换为2018-11-08 00:00:00.000,但是我不知道如何WHERE子句中执行,因此它仅选择最近7天创建的所有记录。

3 个答案:

答案 0 :(得分:1)

使用如下所示的where子句

 select t.* from your_table t
 where CONVERT(datetime, creation_date,11)>= DATEADD(day,-7, GETDATE())

答案 1 :(得分:1)

为了获得最佳性能,您应该使计算远离列:

SELECT * 
FROM <YourTable>
WHERE creation_date >= CONVERT(char(8), DATEADD(day,-7, GETDATE()), 11)

由于varchar的格式-yy / mm / dd,因此可以很好地处理它。不能使用所有格式

答案 2 :(得分:0)

最好的做法是正确地以-开头的日期存储数据,该列的数据类型为Date
假设您无法更改数据库结构,可以将DateDiffGetDate()结合使用:

SELECT <ColumnsList>
FROM <TableName>
WHERE DATEDIFF(DAY, CONVERT(datetime, creation_date,11), GETDATE()) <= 7

当然,您需要将<ColumnsList>替换为列列表,并将<TableName>替换为实际的表名。