SQL Date Between Time Not Date



使用此日期格式:mm/dd/yyyy h:m AM/PM(示例:06/05/2014 5:00 PM),我如何忽略实际日期并获取特定时间之间的数据计数?(如5 pm-9pm)

我尝试过这样的东西,但当然它没有工作,我不确定SQL是否可以这样做:

SELECT COUNT(id) FROM mobile_statistics WHERE timestamp BETWEEN '5:00 PM' AND '9:00 PM';

备注:时间戳字段类型为nvarchar(MAX)

将日期时间转换为time:

SELECT COUNT(id) 
FROM mobile_statistics 
WHERE CAST(timestamp AS time) BETWEEN '5:00 PM' AND '9:00 PM';

如前所述,只需使用convert()将字符串转换为time数据类型。然后,您可以使用判别函数对桶中的东西进行计数。就像

select within_business_hours  = sum(case when convert(time,timestamp))     between '17:00' and '21:00' then 1 else 0 end ) ,
       outside_business_hours = sum(case when convert(time,timestamp)) not between '17:00' and '21:00' then 1 else 0 end ) ,
       null_values            = sum(case when timestamp is null                                        then 1 else 0 end ) ,
from dbo.mobile_statistics ms

应该给你

  • 在工作时间内具有时间戳的行数
  • 时间戳在营业时间以外的行数
  • null时间戳的行数

它们的和应该匹配行的总数

最新更新