首页 > 解决方案 > SQL,GETDATE 在 where 子句中

问题描述

我正在尝试将我的查询用作我的 SQL 查询的当天。

我在下面尝试返回 0 条记录:

select * 
from [TEST].[dbo].LIMIT 
where endOfDay = GETDATE()

select * 
from [TEST].[dbo].LIMIT 
where endOfDay = dateadd(dd, datediff(dd, 0, getdate()), 0)

where endOfDay >= getdate() and endOfDay < getdate() + 1 

一个示例日期是2019-07-09 00:00:00.0

另外,如果今天的日期没有给定日期,我可以得到一个日期范围吗?

任何帮助将不胜感激,谢谢。

标签: sqlsql-server

解决方案


首先,您需要省略引号,否则 'GETDATE()' 只是一个字符串。

其次,要按“天”匹配,您需要从 的结果中去除时间部分GETDATE(),您可以CAST(GETDATE() as DATE)改为使用:

select *
from [TEST].[dbo].LIMIT
where endOfDay = CAST(GETDATE() as DATE)

为了使其发挥最佳效果,该endOfDay列还需要为DATE. 如果是别的东西,你还需要 CAST 或 CONVERTendOfDayDATE.


推荐阅读