MySQL:比较BETWEEN时间

jmy*_*myz 12 mysql

这可能是我想要让它工作的方式不可能的,但是这里也是如此.

SELECT * FROM `table` WHERE CAST('05:00:00' AS time) BETWEEN `start` AND `end`
Run Code Online (Sandbox Code Playgroud)

数据库中的条目是:

`start` = '22:59:59'
`end` = '06:00:00'
Run Code Online (Sandbox Code Playgroud)

但是,查询不返回任何结果.当然,如果涉及日期,这将有效,但是没有.如果开始时间= '00:00:00',它也会起作用.

cha*_*kun 23

我认为你在寻找的是:

SELECT * FROM table WHERE start < CAST('05:00:00' AS time) AND end > CAST('05:00:00' AS time)
Run Code Online (Sandbox Code Playgroud)

我不确定你是否需要使用CAST,尽管这也应该有效.

SELECT * FROM table WHERE start < '05:00:00' AND end > '05:00:00'
Run Code Online (Sandbox Code Playgroud)


Qua*_*noi 15

SELECT  *
FROM    `table`
WHERE   CAST('05:00:00' AS time) BETWEEN `start` AND `end`
        OR (NOT CAST('05:00:00' AS time) BETWEEN `end` AND `start` AND `start` > `end`)
Run Code Online (Sandbox Code Playgroud)

  • 你真聪明!它必须是标记而不是当前答案! (2认同)