我的sql时间范围选择

时间:2016-06-10 14:07:06

标签: mysql database

我的表

starttime   |   endtime  |   id

10:30            11:30        1
11:30            12:30        2
14:30            16:30        3
15:30            16:30        4  

我需要在给定的时间段中找到id 说

10:30 to 13:30 should give me o/p 1 2    
11:30 to 16:30 should give o/p 2 3 4

我正在使用的声明

select id from table where STR_TO_DATE(starttime,'%h:%i')>='10:30' and STR_TO_DATE(endtime,'%h:%i')<='22:30';

它只给我1和2

我无法得到正确的输出我在这里做错了什么? 注意varchar中的开始和结束时间

编辑 -

如果我想在10:30到12:30之间选择ID,请使用以下命令

select id from table where  STR_TO_DATE(starttime,'%H:%i')>='10:30' and STR_TO_DATE(endtime,'%H:%i')<='12:30';

这给了我唯一的身份1 ..但没有给我2,如果我改变12:30到12:40它给我1&amp; 2.BUt我使用的更少或相等,所以它应该给我两个id的权利?为什么它不那样工作?

1 个答案:

答案 0 :(得分:1)

  

STR_TO_DATE(开始时间,&#39;%H:%I&#39)

您使用的格式为%h,根据documentation适用于:

  

小时(01..12)

基本上,12以上的所有内容都是无效的(返回NULL)。 并且,您给这些ID提供了超过12的值。

使用说明符

  

%H

格式为00 - 23

的小时数

或说明符

  

%K

小时0 - 23。