2016-06-10 3 views
1

Мой столМой выбор диапазона времени SQL

starttime | endtime | id 

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

Мне нужно найти идентификатор в заданном временном интервале, например сказать

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

Edit-

Если бы я хотел selectthe идентификаторов с 10:30 до 12:30 Я использую это ниже команды

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 & 2.BUt Я использую меньше или равно, чтобы он дал мне оба права на право? Почему он так не работает?

+0

просто любопытно, что означает 'o/p'? –

ответ

1

STR_TO_DATE (время_запуска, '% H:% я')

Вы используете формат% час, который в соответствии с documentation для:

час (01 .. 12)

По существу, все выше 12 недействительно (возвращает NULL). И вы указали значения выше 12 для этих идентификаторов.

Используйте спецификатор

% Н

в течение нескольких часов в формате 00 - 23

или спецификатор

% к

для часов 0 - 23.

Смежные вопросы