查找具有昨天日期的行 -- 列无效?[复制]

Find rows that have yesterdays date -- Invalid column? [duplicate]

提问人:angleUr 提问时间:2/1/2023 最后编辑:Dale KangleUr 更新时间:2/1/2023 访问量:45

问:

目标:我正在尝试获取表中具有昨天日期的行(但原始列位于日期时间中)。

我尝试过: 我能够弄清楚如何从 https://learnsql.com/cookbook/how-to-get-yesterdays-date-in-t-sql/ 获取昨天的日期

但是,我还必须将表中的 DateTime 转换为日期,以匹配昨天的日期采用日期格式。因此,像SQL语句这样的SO文章无法选择前一天的所有行

当我尝试从数据库表中查找匹配的行时,它说:

无效的列名称“YesterdayDate”

SQL格式

SELECT cast(DateEnded as date) AS YesterdayDate
FROM [dbo].[V]
WHERE YesterdayDate = DATEADD(DAY, -1, CAST(GETDATE() AS date));

我怎样才能正确地做到这一点?

sql-server 转换 日期添加

评论


答:

1赞 Dale K 2/1/2023 #1

事实上,不要那样做。您希望避免对子句中的列调用函数,因为它们会使查询不可优化,即无法使用索引。请改用实际列,而不是转换为日期,而是使用前一天的日期时间窗口。WHERE

SELECT CAST(DateEnded AS date) AS YesterdayDate
FROM [dbo].[V]
WHERE DateEnded >= DATEADD(DAY, -1, CAST(GETDATE() AS date))
AND DateEnded < CAST(GETDATE() AS date);

评论

0赞 Dale K 2/1/2023
@s.soltanzadeh请不要进行从根本上改变答案的编辑。如果您认为合适,请添加自己的。