对于我的网站,我必须选择午夜(前一天晚上)和午夜(第二天晚上)之间发送的所有消息。基本上,这是一个 24 小时的范围。
我不知道该怎么做,因为我将日期以时间戳格式存储在我的数据库中。例如,最后一条消息发布在2013-10-18 11:23:35
.
我想要的是在2013-10-18 00:00:00
and之间发布的所有消息2013-10-18 23:59:59
。这可能吗,如果是,我该怎么做?
您可以将 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
然后使用您的列名检查这两个值之间是否存在。
要找出 DatetimeA 和 DatetimeB 之间发生了什么,sql 关键字 between 不是你的朋友。它通常会导致一个人错过记录。这个结构更好。
where YourDateTimeField >= StartDateTime
and YourDateTimeField < JustAfterTheEndDateTime
在你的情况下,你可以简化它
where YourDateTimeField >= DateA
and YourDateTimeField < TheDayAfterDateA