sql - 几天之间的MySQL时间

标签 sql mysql

我有一个存储餐厅营业时间的应用程序:

我获取当前营业餐厅的代码。我的 SQL 查询(简化)看起来像

SELECT * 
  FROM `restaurants` r 
 WHERE r.from <= NOW()  
   AND r.to >= NOW();

这里的问题是,有一个滚动的条目 -- 它是关于一家从上午 11 点营业到第二天凌晨 3 点的餐厅。

什么是捕获特定餐厅的好查询?

最佳答案

在伪代码中:

if (close > open) {
    store_is_open = (open <= now <= close)
} else {
    store_is_open = (open <= now || now <= close)
}

将其转换为 SQL:

WHERE IF(
    r.from < r.to,
    NOW() BETWEEN r.from AND r.to,
    NOW() >= r.from OR NOW() <= r.to
)

您可能还想查看 24 小时营业的地点。下面的代码假定您将 fromto 时间设置为相同(例如:从午夜到午夜)

WHERE IF(
    r.from = r.to,
    1,
    IF(
        r.from < r.to,
        NOW() BETWEEN r.from AND r.to,
        NOW() >= r.from OR NOW() <= r.to
    )
)

关于sql - 几天之间的MySQL时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3908009/

相关文章:

php - mysql全连接查询

PHP、MySQL; GROUP BY 不适用于日期时间

SQL Server存储过程存储返回值

mysql - COALESCE 能否与 VIEW 一起正常工作?

MySQL - 将数据从一个表复制到另一个

sql - 我应该使用 SQL JOIN 还是 IN 子句?

mysql - 获取最近 12 个月总和的数据

mysql - 如何查询: agregate group by column A for each column B value

sql - 有人可以解释为什么以下查询的功能不同吗?从字面上看,两者之间的唯一区别是

sql - TSQl:选择当前日期 - 6 天并将时间设置为 12:01 AM