MySQL之间的天数

Zah*_*aka 3 mysql sql

我有一个应用程序存储餐馆开放的时间:

获取当前开放餐厅的代码.我的SQL查询(简化)看起来像

SELECT * 
  FROM `restaurants` r 
 WHERE r.from <= NOW()  
   AND r.to >= NOW();
Run Code Online (Sandbox Code Playgroud)

这里的问题是,有一个条目可以翻转 - 这是一个餐厅,从第二天上午11点到凌晨3点开放.

捕捉那个特定的餐馆会有什么好的疑问?

nic*_*ckf 5

在伪代码中:

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小时开放的地方.以下代码假定您将设置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
    )
)
Run Code Online (Sandbox Code Playgroud)