0

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

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

我想要的是在2013-10-18 00:00:00and之间发布的所有消息2013-10-18 23:59:59。这可能吗,如果是,我该怎么做?

4

2 回答 2

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

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

于 2013-10-18T09:54:03.257 回答
0

要找出 DatetimeA 和 DatetimeB 之间发生了什么,sql 关键字 between 不是你的朋友。它通常会导致一个人错过记录。这个结构更好。

where YourDateTimeField >= StartDateTime
and YourDateTimeField < JustAfterTheEndDateTime

在你的情况下,你可以简化它

where YourDateTimeField >= DateA
and YourDateTimeField < TheDayAfterDateA
于 2013-10-18T09:57:11.977 回答