SQL“ WHERE日期=昨天”,但日期是字符串(yyyymmdd)

时间:2018-08-15 22:11:40

标签: sql sql-server string date where

我正尝试在SQL中执行查询,该查询应返回昨天创建的所有记录,我知道如果date字段的数据类型正确,但是在此db中的日期在字符串中,这将非常容易。 / p>

此查询返回正确的行数:

SELECT id FROM table WHERE createdDate = '20180814'

我试图做这样的事情:

SELECT id FROM table WHERE CONVERT(date, createdDate) = dateadd(day,-1, getdate()) 

但是返回0行,但是没有错误。

更改选项createdDate的数据类型既不是选项,也不是对数据库结构的任何更改。

要点是,每当执行查询时,返回昨天创建的记录,此时,我出于想法,请帮忙:)

谢谢!

1 个答案:

答案 0 :(得分:1)

问题是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())