我有一个存储餐厅营业时间的应用程序:
我获取当前营业餐厅的代码。我的 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 小时营业的地点。下面的代码假定您将 from
和 to
时间设置为相同(例如:从午夜到午夜)
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/