2016-11-16 2 views
0

С MySQL мне нужно найти строки, где два значения находятся между двумя столбцами.SQL, где два значения времени между двумя столбцами времени

Например, я создаю расписание от '15: 00 'до '18: 00', но запрос должен проверять, имеет ли какая-либо строка период использования. Если есть запись от «14: 00» до «18: 30», мне нужно вернуть ее для проверки.

Я пытался что-то вроде, но не работает:

select * from availabilities where (('15:00' or '18:00') between start_hour and end_hour) 

Любая идея?

+0

http://wiki.c2.com/?TestIfDateRangesOverlap – shawnt00

ответ

1

В основном это вопрос «если диапазон перекрывает другой диапазон». Следующий запрос должен работать до тех пор, как время начала меньше, чем время окончания:

SELECT * 
FROM availabilities 
WHERE '18:00' > start_hour AND end_hour > '15:00' 
0

Вы можете использовать TIME() функции для извлечения времени части колонны datatime/меток времени

Eg.

SELECT * FROM Table 
WHERE TIME('timeStampCol') BETWEEN '12:00:00' AND '18:00:00' 
+0

http://stackoverflow.com/questions/6973844/select-records ее время-в-интервального между-120000-и-180000-на-каждый-дня – Ripon

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