MySQL - добавить рабочее время, чтобы магазин открывался два раза в день после перерыва - PullRequest
0 голосов
/ 16 марта 2019

Ресторан открывается с понедельника в 10:00 до вторника 03:00 и снова открывается во вторник в 10:00 до среды 03:00.

Например:
таблица: business_hour

id | weedDay | openDay | openTime | closeDay | closeTime
-----------------------------------------------------------
1  | Monday  | Monday  | 10:00:00 | Tuesday  | 03:00:00 
2  | Tuesday | Tuesday | 10:00:00 | Wednday  | 03:00:00

Как сделать так, чтобы предложение MySQL SELECT показывало, является ли ресторан открытым или нет?

<?php 

require_once "pdo/pdo.php";

    try {
    $stmt = $pdo->prepare("
            SELECT 
             CASE WHEN
                exists (
                  SELECT 1 FROM business_hour WHERE
                  (openday = dayname(now()) AND opentime <= time(now()))
                  OR
                  (closeday = dayname(now()) AND closetime >= time(now()))               
                )
                THEN 'Open'
                ELSE 'Closed'
              END status
            ");
    $stmt->execute();
    while ($row = $stmt->fetch(PDO::FETCH_ASSOC))
    {
        echo $row['status'];
    }


    } catch( PDOException $e ) {
        echo $e.'Not selected'; // error message
    }    
?>

1 Ответ

0 голосов
/ 16 марта 2019

Полагаю, вы хотите знать, открыт ли сейчас ресторан:

select 
  case when
    exists (
      select 1 from business_hour where
      (openday = dayname(now()) and opentime <= time(now()))
      or
      (closeday = dayname(now()) and closetime >= time(now()))               
    )
    then 'Open'
    else 'Closed'
  end status;

См. Демоверсию
Это будет работать, только если в таблице есть действительные названия дней business_hour,
, поэтому опечатки типа Wednday вместо Wednesday приведут к сбою.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...