我需要检查给定或选定的时间是否在开始和结束时间之间, 例如,给定时间是10:12(AM),在数据库中我们有06:00到14:00
我的查询是
GROUP BY
但是对于2:00(AM),上面的查询不起作用(返回一个空行)
SELECT * FROM erp_shift WHERE '10:12' between Start_Time AND End_Time
帮我找到解决问题的方法。
答案 0 :(得分:2)
你需要考虑一种管理Start_Time>的方法。 End_Time,这是一个解决方案:
SELECT * FROM erp_shift
WHERE (Start_Time <= End_Time and :Mytime between Start_Time and End_Time) or
(End_Time < Start_Time and (:Mytime <= End_Time or :Mytime >= Start_Time ))
答案 1 :(得分:0)
试试这个:
SELECT * FROM erp_shift
WHERE STR_TO_DATE('10:12','%H:%i') between STR_TO_DATE(Start_Time,'%H:%i:%s')
AND STR_TO_DATE(End_Time,'%H:%i:%s');
进行测试:
SELECT STR_TO_DATE('10:12','%H:%i') between STR_TO_DATE('10:00:00','%H:%i:%s')
AND STR_TO_DATE('12:00:00','%H:%i:%s');
按预期打印1(表示真实)。