提问人:angleUr 提问时间:2/1/2023 最后编辑:Dale KangleUr 更新时间:2/1/2023 访问量:45
查找具有昨天日期的行 -- 列无效?[复制]
Find rows that have yesterdays date -- Invalid column? [duplicate]
问:
目标:我正在尝试获取表中具有昨天日期的行(但原始列位于日期时间中)。
我尝试过: 我能够弄清楚如何从 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));
我怎样才能正确地做到这一点?
答:
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请不要进行从根本上改变答案的编辑。如果您认为合适,请添加自己的。
评论