在我的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:00,凌晨2:30,因为餐厅在午夜后肯定会关门。如何在SQL Quires中进行管理?我怎样才能检查餐厅是否营业的特定时间段?
目前,我正在执行以下查询:
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分开始。但是如何在数据库比较中进行管理,我并没有得到最好的解决方案。
发布于 2015-01-14 18:57:26
我建议你围绕着开始时间和持续时间来制定你的问题。您可以从当前的数据集中执行此操作。此查询从表中获取开始时间和持续时间。
select weekday,
start,
stop,
timediff(
if (TIMESTAMPDIFF(MINUTE,start,stop)<0,stop+INTERVAL 24 HOUR, stop),
start) duration
from sechedules正如您所看到的,如果24小时比开放时间提前出现,就会增加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)https://stackoverflow.com/questions/27949882
复制相似问题