我有两张桌子:
venues
- ID
- 场地名称
hours_of_operation
- 开放日(周一、周二、周三...)
- 营业时间
- 关闭时间
- is_close (布尔值)
营业时间或营业时间通常介于两者之间10PM to 03AM
,这意味着当我在星期二凌晨 1 点查看页面时,我仍然需要查看星期一而不是星期二的营业时间。
一位好成员帮我解决了这个问题,一切正常:)。然后我添加了一些代码,以便在何时显示“is_closed
已true
关闭”文本。
然而,这样做的结果是......当一个场所在8PM
当前打开时,3PM
会返回文本“关闭”。即使场地尚未开放,我也希望它显示当天的关闭时间。
我还想知道是否可以将前一天的营业时间显示到凌晨 5:59,然后在早上 6:00 开始显示当天的营业时间。
示例:一个场地在星期一晚上 9 点到凌晨 4 点开放,所以我会看到该场地的关闭时间是从星期一早上 6 点到星期二早上 5 点 59 分,依此类推....除非它在星期一关闭,在这种情况下,文本为 '显示“已关闭”。
这是我的代码:
$fullDate = date('Y-m-d H:i:s');
SELECT
venues.ID,
venues.VENUE_NAME,
hrs.opening_day,
hrs.opening_time,
hrs.closing_time,
CASE WHEN (is_closed = 1 or is_closed is null)
THEN 'closed'
ELSE closing_time END AS CLOSING_TIME_OR_CLOSED
FROM venues
LEFT JOIN hours_of_operation hrs
on hrs.venue_id = venues.id
and ((hrs.opening_day=date_format('$fullDate' -
INTERVAL
(closing_time<opening_time and time('$fullDate')<closing_time)
DAY, '%a'))
AND (closing_time<opening_time XOR
(time('$fullDate') >= least(opening_time,closing_time)
and time('$fullDate') < greatest(opening_time, closing_time))))
...然后我回应CLOSING_TIME_OR_CLOSED
谢谢!
编辑 请查看此架构
如您所见,第一个场地已关闭,显示器正确显示为“关闭”。然而,第二个是开放的,但仍然显示为关闭,因为设定的时间是14:30
,而场地在 开放21:00
。如果场地尚未开放,我想显示关闭时间而不是“关闭”。
另外,如果时间小于 06:00 AM,我想显示开放的场地,2013-01-29
而不是2013-01-30
一些场地开放到深夜。