我有两张桌子:
venues
hours_of_operation
小时或操作通常在10PM to 03AM
左右,这意味着当我在凌晨01点检查页面时,我仍然需要查看星期一而非星期二的开放时间。
一位好成员帮我解决了这一切,这一切都有效:)然后我添加了一些代码,以便在is_closed
为true
时显示“已关闭”文字。
这样做的确如此......当一个场地在8PM
打开并且当前为3PM
时,会返回“关闭”文本。即使场地尚未开放,我希望它显示当天的收盘时间。
我还想知道是否可以在上午5:59之前显示前一天的开放时间,然后在上午6:00开始显示当天的开放时间
示例:一个场地在星期一晚上9点到凌晨04点开放,所以我会看到该场地的关闭时间是从周一早上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,我想显示从2013-01-29
而不是2013-01-30
打开的场地,因为有些场地会在深夜开放。