即使Venue仍然关闭,显示今天的营业时间

时间:2013-01-31 13:43:38

标签: mysql

我有两张桌子:

venues

  • id
  • venue_name

hours_of_operation

  • opening_day (周一,周二,周三......)
  • OPENING_TIME
  • CLOSING_TIME
  • is_closed (布尔值)

小时或操作通常在10PM to 03AM左右,这意味着当我在凌晨01点检查页面时,我仍然需要查看星期一而非星期二的开放时间。

一位好成员帮我解决了这一切,这一切都有效:)然后我添加了一些代码,以便在is_closedtrue时显示“已关闭”文字。

这样做的确如此......当一个场地在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

谢谢!


修改 Please see this schema

如您所见,第一个场地已关闭,显示屏正确显示为“已关闭”。第二个是开放的,但仍然显示为已关闭,因为设置时间为14:30,而场地在21:00打开。如果场地尚未开放,我想显示关闭时间而不是“关闭”。

此外,如果时间少于06:00,我想显示从2013-01-29而不是2013-01-30打开的场地,因为有些场地会在深夜开放。

0 个答案:

没有答案