我的表
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的权利?为什么它不那样工作?
答案 0 :(得分:1)
STR_TO_DATE(开始时间,&#39;%H:%I&#39)
您使用的格式为%h,根据documentation适用于:
小时(01..12)
基本上,12以上的所有内容都是无效的(返回NULL)。 并且,您给这些ID提供了超过12的值。
使用说明符
%H
格式为00 - 23
的小时数或说明符
%K
小时0 - 23。