我正在尝试使用查询作为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
如果今天的日期没有给定的日期,我可以得到一个日期范围吗?
谢谢您的任何帮助。
答案 0 :(得分:2)
首先,您需要省略引号,否则'GETDATE()'只是一个字符串。
第二,要按“天”进行匹配,您需要从GETDATE()
的结果中剥离时间部分,而可以使用CAST(GETDATE() as DATE)
来代替:
select *
from [TEST].[dbo].LIMIT
where endOfDay = CAST(GETDATE() as DATE)
为使此方法最有效,endOfDay
列还必须为DATE
类型。如果还有其他情况,则还需要将endOfDay
投射或转换为DATE
。
答案 1 :(得分:1)
使用引号使它寻找毫无意义的文字>>> 10 == 10.000000000000001
False
>>> 10 == 10.0000000000000001
True
一无所获
您可以使用
'GETDATE()'
答案 2 :(得分:0)
GETDATE()
返回服务器的当前日期和时间。除非您有与之完全匹配的记录,否则使用GETDATE
毫无意义。基于endOfDay
列名,您看起来不像。
您显示的其他条件,
dateadd(dd,datediff(dd,0,getdate()),0)
本质上是在剥离时间并返回当前日期的午夜。
select getdate() 2019-07-11 15:10:09.287
select dateadd(dd,datediff(dd,0,getdate()),0) 2019-07-11 00:00:00.000
答案 3 :(得分:0)
尝试一下:
select *
from [TEST].[dbo].LIMIT
where cast(endOfDay as date) = cast(GETDATE() as date)
SQL Fiddle以查看将与之比较的日期。
答案 4 :(得分:0)
假设您不关心时间,请将EndofDay和Getdate都转换为简单的日期进行比较。
select * from [TEST].[dbo].LIMIT where convert(date,EndOfDay) = convert(date,getdate())