运行MS SQL Server 2008
我有这个问题:
select count(*) from dbo.study
where study_datetime >= (GETDATE() -1)
将所有昨天的考试都写回我的学习表。如果我今天要求它完成所有事情,我怎么能让它回来?例如,我今天将从00:00:00-000 - 当前时间
获取所有内容我在'study_datetime'列中的值如下所示:2014-05-06 10:40:31.000
我似乎无法想出这个。我试过用'0'代替'-1',但我得到0结果。
感谢
答案 0 :(得分:2)
遗憾的是,oracle中没有trunc(),但是因为你有2008版本,你可以使用:
select count(*) from dbo.study
where study_datetime >= cast(getDate() As Date)
答案 1 :(得分:1)
如果我理解得很好(同一天的值),我认为您可以使用DATEDIFF函数,将日期作为日期部分。
select count(*) from dbo.study
where datediff(dd, study_datetime, GETDATE()) = 0
and study_datetime <= GETDATE() -- if you need a check for the "future" (datetime after GETDATE() )
答案 2 :(得分:0)
从dbo.study中选择count(*) 其中study_datetime:2014-05-06 00:00:00 and:2014-05-06 23:59:59。
它可能对你有帮助
答案 3 :(得分:0)
要获得今天严格要求的所有内容,请使用:
select count(*) from dbo.study
where study_datetime >= cast(getDate() As Date)
and study_datetime < cast(DATEADD(day,1,getdate()) as Date)
当您使用连续数据时,切换到使用半开放时间间隔几乎总是更好,以确保数据分成一个且恰好一个时间间隔。通常,当你想要&#34;整天&#34;时,你不想排除在一天的最后一分钟发生的事情(例如23:59:37.223或甚至23:59:59.993 )。因此,您通常会将查询写为>= midnight at the start of the day
和< midnight at the start of the following day
(请注意不同类型的比较)
这通常比尝试计算今天的最后一刻并使用<=
(或BETWEEN
)进行比较更好。