在我的rails应用程序中,当前在每个餐厅的应用程序中都有打开和关闭时间表.喜欢
Monday 5:00 AM to 11:45 PM
Tuesday 6:00 AM to 11:00 PM
Wednesday 9:00 AM to 8:00 PM
Thursday 11:00 AM to 11:45 PM
Friday 5:00 AM to 11:45 PM
Saturday 5:00 AM to 11:45 PM
我用24小时数据库时间格式将上述时间保存到数据库中.它工作得非常好.当我试图获取有关24小时时间的开放餐厅时间的信息时,我能够从数据库中查询数据.但现在我的客户希望关闭时间可以是凌晨2点,凌晨2:30,因为餐厅在午夜之后肯定会关闭.
如何在SQL Quires中进行管理?如何检查餐厅是否开放的特定时间段?
目前我执行了以下Query:
SELECT
COUNT(*)
FROM
`sechedules`
WHERE
`sechedules`.`sechedulable_id` = 16
AND `sechedules`.`sechedulable_type` = 'Operation'
AND (day = 'Wednesday')
AND (opening_time <= '21:28:23'
and closing_time >= '02:28:23'
and is_closed = 0);
我可以改变一天的周期.它可以从早上5点到凌晨4点59分开始.但是如何在数据库比较中管理我没有得到最好的解决方案.
最佳答案 我建议你围绕开始时间和持续时间制定你的查询.您可以从当前的数据集中执行此操作.此查询从表中获取开始时间和持续时间.
select weekday,
start,
stop,
timediff(
if (TIMESTAMPDIFF(MINUTE,start,stop)<0,stop+INTERVAL 24 HOUR, stop),
start) duration
from sechedules
正如你所看到的,如果它显示早于开放时间,那么它会在关闭时间内增加24小时.
然后,您可以查看与此类特定时间段匹配的记录数.
select count(*) cnt
where sechedulable_id = 16
and day = 'Wednesday'
and start <= '21:28:23'
and '21:28:23' <= if(TIMESTAMPDIFF(MINUTE,start,stop)<0,stop+INTERVAL 24 HOUR, stop)