SQL WHERE MIDWIGHT MIDNIGHT和MIDNIGHT之间的时间戳

时间:2013-10-18 09:35:25

标签: sql date timestamp between

对于我的网站,我必须选择午夜(前一晚)和午夜(第二天晚上)之间发送的所有消息。基本上,这是一个24小时的范围。

我不知道怎么做,因为我在我的数据库中以时间戳格式存储日期。例如,最后一条消息发布在2013-10-18 11:23:35上。

我想要的是在2013-10-18 00:00:002013-10-18 23:59:59之间发布的所有邮件。 这是可能的,如果是的话,我怎么能这样做?

2 个答案:

答案 0 :(得分:2)

您可以在T-SQL中计算所需的时间:

-- for previous day mid night  as start time
declare @start_datetime datetime,@end_datetime datetime 
Select @start_datetime = DATEADD(d,0,DATEDIFF(d,0,GETDATE()))
-- for current day mid night as end time
Select @end_datetime = DATEADD(SS,86399,DATEDIFF(d,0,GETDATE()))

select @start_datetime, @end_datetime

然后使用列名检查这两个值之间是否存在。

答案 1 :(得分:0)

要了解DatetimeA和DatetimeB之间发生的事情,之间的sql关键字不是你的朋友。它通常会导致人们错过记录。这种结构更好。

where YourDateTimeField >= StartDateTime
and YourDateTimeField < JustAfterTheEndDateTime

在您的情况下,您可以使用

简化它
where YourDateTimeField >= DateA
and YourDateTimeField < TheDayAfterDateA