我正在尝试通过“至少开放至”
过滤器来搜索 field 。
我遇到的问题是,有些场所的营业时间是上午 8 点
到下午 6 点
,有些场所的营业时间是晚上 10 点
到 >凌晨 3 点
。一位 Nice SO 成员帮助我创建了这段代码,但是当我尝试修改它以进行搜索时,我注意到一个问题。
如果我查询营业时间至少到 20:00
的 field ,并且 field 开放时间为 11AM
到 21:00
>,那么一切都ok。
但是,如果我查询营业时间至少到 20:00
的场所,并且营业时间为 21:00
到 03:00
,然后返回关闭
。
如何显示仍关闭的场馆的营业时间?
这是我的代码:
SELECT
e.VENUE_NAME,
hrs.opening_day,
hrs.opening_time,
hrs.closing_time
FROM hours_of_operation hrs join venues e
on hrs.venue_id = e.id
and not is_closed
and ((hrs.opening_day=date_format('$phpWhenDate' - INTERVAL (closing_time<opening_time and time('$phpWhenDate')<closing_time) DAY, '%a'))
AND (closing_time<opening_time XOR
(time('$phpWhenDate') >= least(opening_time,closing_time)
and time('$phpWhenDate') < greatest(opening_time, closing_time))))
dataWhenDate
如下所示:2013-02-21 04:00:00
基本上,我使用 slider 来选择我希望 field 至少开放多长时间,并生成要发送的日期。
谢谢大家!
最佳答案
严格来说,在 21:00
和 03:00
之间开放的场所,在查询营业时间至少 20 点时实际上应该返回为关闭状态: 00
,因为它只在 21:00 开放。如果我是用户,如果开放时间至少为 20:00
显示的 field 仅在 21:00
开放,那么实际上会误导我。
如果您只是想显示哪些场馆在 20:00
之后开放,则只需将 20:00
与场馆的开放和关闭时间进行比较,如果大于 20:00
则在 20:00
之后开放(但您可能需要添加一个星号,向用户解释在 20 之后开放:00
包括 20:00
之后开放的场馆)。
关于mysql - 返回 future 的营业时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14988831/