Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
需要使用select查询来检查MySQL中从晚上10:00(22:00)到早上6:00(06:00)的时间吗?_Mysql - Fatal编程技术网

需要使用select查询来检查MySQL中从晚上10:00(22:00)到早上6:00(06:00)的时间吗?

需要使用select查询来检查MySQL中从晚上10:00(22:00)到早上6:00(06:00)的时间吗?,mysql,Mysql,我需要检查给定或选定的时间是否介于开始时间和结束时间之间, 例如,给定的时间是10:12(上午),在数据库中我们有06:00到14:00 我的问题是 SELECT * FROM erp_shift WHERE '10:12' between Start_Time AND End_Time 但对于2:00(上午),上述查询不起作用(返回空行) 请帮助我找到修复方法。尝试以下方法: SELECT * FROM erp_shift WHERE STR_TO_DATE('10:12','%H:%i

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

我的问题是

SELECT * FROM erp_shift WHERE '10:12' between Start_Time AND End_Time
但对于2:00(上午),上述查询不起作用(返回空行)

请帮助我找到修复方法。

尝试以下方法:

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(为真)


请参阅。

您需要考虑一种管理开始时间>结束时间的方法,这里有一个解决方案:

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 ))
从erp\u班次中选择*

其中(开始时间)这里是开始时间和结束时间之间重叠的一天。因此您也需要注意这一点,因为您在22:01和06:00之间没有任何记录。查询这些记录与查询5到4之间的所有数字集相同。它是空的!不起作用,他的问题更像是:选择STR_to_DATE('10:12','%H:%i'))在STR_TO_DATE('10:00:00','%H:%i:%s')和STR_TO_DATE('06:00:00','%H:%i:%s')之间;在我的情况下,今天的一次表示明天的下一次(这不起作用)在stru TO_DATE('22:00:00','%H:%i:%s')和stru TO_DATE('6:00:00','%H:%i:%s')之间选择stru TO_TO_TO_DATE日期('2:12','%H:%i:%s')有错误-从erp轮班选择*(开始时间忘记结束时间)对不起,我没有研究这个查询。查询对我有用,谢谢
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 ))