【发布时间】:2015-01-14 18:23:33
【问题描述】:
在我的 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 查询中进行管理?如何查看餐厅在指定时间段内是否营业?
目前我正在执行以下查询:
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:00 到凌晨 4:59 开始。但是如何在数据库比较中管理我没有得到最好的解决方案。
【问题讨论】:
-
像这样跨越时间“区域”是个问题。一个快速/肮脏的技巧是在星期二创建第二个班次,所以这个地方当天开放两次:12:00am -> 2:00am,然后 06:00am -> 11:00pm
-
说清楚,这是显示问题还是查询问题?
-
@JasonMcCreary 这是一个查询问题,因为我想获取在指定时间营业的餐厅。
-
也许是这个?
Restaurant.where('? BETWEEN opening_time AND closing_time', Time.zone.now) -
@MrYoshiji 当 opening_time 是 5:00 AM 并且 close_time 是 2:00 AM 时这将不起作用。
标签: mysql ruby-on-rails activerecord