SQL显示|从今天的日期选择数据|目前每天只有
我有这个疑问,它假设显示从当前日期(今天)数据只SQL显示|从今天的日期选择数据|目前每天只有
SELECT * FROM Customer WHERE visitTime <= GETDATE() AND visitTime > GETDATE() - 1
其中visitTime是日期时间型
但它不能很好地工作,因为我认为,问题出在AND visitTime > GETDATE() - 1
但我不知道如何解决这个问题,任何人有什么建议吗?
请看下面的例子:
declare @visitTime datetime ='2014-10-16 23:59:59.000'
select GETDATE() GETDATE, @visitTime visitTime, GETDATE() - 1 [GETDATE-1]
GETDATE visitTime GETDATE-1
2014-10-17 00:02:18.980 2014-10-16 23:59:59.000 2014-10-16 00:02:18.980
你会看到visittime日期明确指定为下限(-1)的范围落在减去一整天,而不仅仅是一部分时间。
你也可以使用这样的:
-- using GETDATE() for the upper bound misses visitTime that are
-- on the current day, but at a later time than now.
WHERE visitTime < DateAdd(Day, DateDiff(Day, 0, GetDate())+1, 0)
AND visitTime >= DateAdd(Day, DateDiff(Day, 0, GetDate()), 0)
,或者如果你的SQL Server上2008+具有date
数据类型,这样的:
WHERE CAST(visitTime AS DATE) = CAST(GETDATE() AS DATE)
注意GETDATE()
是T-SQL具体而言,ANSI相当于是CURRENT_TIMESTAMP
我喜欢它了很多,当你不仅发布答案,但还举例解释。大! – 2014-10-16 23:06:25
不错的一个CAST(GETDATE()AS DATE)' – 2016-01-22 12:28:15
假设今天是昨天午夜到午夜今晚,你可以使用以下条件
Select * from Customer where
visitTime >= DateAdd(d, Datediff(d,1, current_timestamp), 1)
and
visitTime < DateAdd(d, Datediff(d,0, current_timestamp), 1);
SELECT * FROM Customer WHERE visitTime > = convert(date,getdate())
and visitTime < dateadd(d,1,convert(date,getdate()))
检查了这一点
select *
from Customers
where convert(date,createddate) = convert(date,getdate());
的可能重复[获取行,其中datetime列=今天 - SQL服务器小白](http://stackoverflow.com/questions/2583228/get-行其中,日期时间列,今日-SQL服务器小白) – bummi 2014-10-16 22:09:46