对于我的网站,我必须选择午夜(前一晚)和午夜(第二天晚上)之间发送的所有消息。基本上,这是一个24小时的范围。
我不知道怎么做,因为我在我的数据库中以时间戳格式存储日期。例如,最后一条消息发布在2013-10-18 11:23:35
上。
我想要的是在2013-10-18 00:00:00
和2013-10-18 23:59:59
之间发布的所有邮件。
这是可能的,如果是的话,我怎么能这样做?
答案 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