我想使用SELECT语句在服务器上构建视图并选择最近7天创建的所有记录吗?
原始creation_date
字段位于varchar
中,就像'18/11/08'
一样,我使用CONVERT(datetime, creation_date,11)
将其转换为2018-11-08 00:00:00.000
,但是我不知道如何WHERE
子句中执行,因此它仅选择最近7天创建的所有记录。
答案 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
。
假设您无法更改数据库结构,可以将DateDiff
与GetDate()
结合使用:
SELECT <ColumnsList>
FROM <TableName>
WHERE DATEDIFF(DAY, CONVERT(datetime, creation_date,11), GETDATE()) <= 7
当然,您需要将<ColumnsList>
替换为列列表,并将<TableName>
替换为实际的表名。