如果我运行查询
SELECT curtime(), concat(START_HOUR,':00:00'), concat(END_HOUR,':00:00') from table_name;
我得到以下结果
10:30:50 | 1:00:00 | 12:00:00
10:30:50 | 1:00:00 | 12:00:00
但是当我尝试检索行时如果当前时间在 START_HOUR 和 END_HOUR 之间(START_HOUR 和 END_HOUR 是 INT(2)
)它返回 0 行。
我尝试了以下查询,但都没有成功
SELECT curtime(), concat(START_HOUR,':00:00'), concat(END_HOUR,':00:00') from table_name WHERE curtime() >=concat(START_HOUR,':00:00') && curtime()<=concat(END_HOUR,':00:00');
SELECT curtime(), concat(START_HOUR,':00:00'), concat(END_HOUR,':00:00') from table_name WHERE curtime() BETWEEN concat(START_HOUR,':00:00') AND concat(END_HOUR,':00:00');
SELECT curtime(), concat(START_HOUR,':00:00'), concat(END_HOUR,':00:00') from table_name WHERE concat(curtime(),'') >=concat(START_HOUR,':00:00') && concat(curtime(),'')<=concat(END_HOUR,':00:00');
SELECT curtime(), concat(START_HOUR,':00:00'), concat(END_HOUR,':00:00') from table_name WHERE concat(curtime(),'') BETWEEN concat(START_HOUR,':00:00') AND concat(END_HOUR,':00:00');
SELECT curtime(), concat(START_HOUR,':00:00'), concat(END_HOUR,':00:00') from table_name WHERE CONCAT(DATE_FORMAT(NOW(), '%H:%i'), ':00') >=concat(START_HOUR,':00:00') && CONCAT(DATE_FORMAT(NOW(), '%H:%i'), ':00')<=concat(END_HOUR,':00:00');
以及这些的所有组合。
请帮助我找出我做错了什么以及如何检索所需的记录。
最佳答案
您需要将时间值CAST
为 TIME 类型。
SELECT
curtime(),
CAST(concat(START_HOUR,':00:00') as TIME),
CAST(concat(END_HOUR,':00:00') as TIME)
FROM table_name WHERE
CURTIME() BETWEEN
CAST(CONCAT(START_HOUR,":00:00") AS TIME) AND
CAST(CONCAT(END_HOUR,":00:00") AS TIME)
关于mysql - 如果当前时间在行的开始时间和结束时间之间,则检索行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39158744/