我有一个应用程序存储餐馆开放的时间:
获取当前开放餐厅的代码.我的SQL查询(简化)看起来像
SELECT *
FROM `restaurants` r
WHERE r.from <= NOW()
AND r.to >= NOW();
Run Code Online (Sandbox Code Playgroud)
这里的问题是,有一个条目可以翻转 - 这是一个餐厅,从第二天上午11点到凌晨3点开放.
捕捉那个特定的餐馆会有什么好的疑问?
在伪代码中:
if (close > open) {
store_is_open = (open <= now <= close)
} else {
store_is_open = (open <= now || now <= close)
}
Run Code Online (Sandbox Code Playgroud)
将其转换为SQL:
WHERE IF(
r.from < r.to,
NOW() BETWEEN r.from AND r.to,
NOW() >= r.from OR NOW() <= r.to
)
Run Code Online (Sandbox Code Playgroud)
您可能还想检查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
)
)
Run Code Online (Sandbox Code Playgroud)