需要使用选择查询来检查MySQL中的10:00 PM(22:00)到6:00 AM(06:00)的时间?

时间:2018-02-28 08:19:41

标签: mysql

我需要检查给定或选定的时间是否在开始和结束时间之间, 例如,给定时间是10:12(AM),在数据库中我们有06:00到14:00

My sample records

我的查询是

GROUP BY

但是对于2:00(AM),上面的查询不起作用(返回一个空行)

SELECT * FROM erp_shift WHERE '10:12' between Start_Time AND End_Time

帮我找到解决问题的方法。

2 个答案:

答案 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(表示真实)。

请参阅Demo on SQL Fiddle