sql - SQL“WHERE 日期 = 昨天”但日期是字符串 (yyyymmdd)
问题描述
我正在尝试在 SQL 中进行查询,该查询应返回昨天创建的所有记录,我知道如果日期字段的数据类型正确,但在此数据库中日期为字符串,这将非常容易。
此查询返回正确的行数:
SELECT id FROM table WHERE createdDate = '20180814'
我试图做这样的事情:
SELECT id FROM table WHERE CONVERT(date, createdDate) = dateadd(day,-1, getdate())
但是返回了 0 行,但没有错误。
更改 createdDate 的数据类型不是一个选项,也不是 db 结构的任何更改。
重点是在执行查询时返回昨天创建的记录,此时我没有想法,请帮助:)
谢谢!
解决方案
问题是时间分量GETDATE()
:
SELECT id
FROM table
WHERE CONVERT(date, createdDate) = DATEADD(day, -1, CONVERT(date, getdate()));
或者:
WHERE createdDate >= DATEADD(day, -1, CONVERT(date, getdate())) AND
createdDate < CONVERT(date, getdate())