php - MySQL-添加商店在休息后每天营业两次的营业时间

标签 php mysql phpmyadmin

餐厅周一上午 10 点至周二凌晨 03 点营业,周二上午 10 点至周三凌晨 03 点再次营业。

例如:
表: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
    }    
?>

最佳答案

我猜您想知道餐厅现在是否营业:

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;

请参阅demo
仅当表 business_hour 中存在有效的日期名称时,此功能才有效,
因此像 Wednday 而不是 Wednesday 这样的拼写错误会导致该错误失败。

关于php - MySQL-添加商店在休息后每天营业两次的营业时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55199635/

相关文章:

php - 来自不同表的上一年记录

php - 使用 PHP 从 mysql 加载文件

javascript - ajax调用后无法使用jquery解析json

php - 在 PHP 中的 Mysql 数据库查询中使用外部参数

javascript - PHP 正在插入特殊字符,例如在数据库表中

php - 需要从输出中可用的最大 id 找到数据库值

php - 对于 CASE WHEN,此 MySQL 语法有何无效之处?

php - 按排名为多场比赛的玩家分配积分

mysql - mysql中如何去掉回车符?

mysql - 我通过 phpMyAdmin 在 mySQL 中所做的一切都出现常量 #1064 错误