проверьте, находится ли введенное время даты между диапазоном 2 значений даты и времени

У меня есть таблица, которая содержит 2 столбца startdate и enddate для хранения времени начала и окончания развлекательной программы в определенном месте (оба столбца имеют формат формата даты и времени: «Y-m-d H: i: s»). Когда пользователь создает a program within this time limit или the end time of the program lies within the time limit but not the start time или the start time lies within the time limit but not the end time, программа не должна быть вставлена ​​в таблицу с предупреждением. Я написал такой запрос. Но он не работает должным образом.

SELECT * FROM tbl_venue WHERE venue_id='id' AND
((venue_start_datetime BETWEEN 'entered starttime' AND 'entered end time')
AND (venue_stop_datetime BETWEEN 'entered starttime' AND 'entered end time'))    

Заранее спасибо.


person Techy    schedule 05.03.2013    source источник
comment
› и ‹ операции работают с датами   -  person DiMono    schedule 05.03.2013
comment
@DiMono Hav использовал это, но в некоторых случаях это не работает идеально   -  person Techy    schedule 05.03.2013
comment
Разве это не зависит от типа данных столбца? ЕСЛИ это varchar, это все равно не сработает, не так ли? Если у вас есть столбцы, установленные как DATETIME, это будет работать.   -  person Keeleon    schedule 05.03.2013
comment
В каких случаях не работает? Это игнорирование часов и минут или что-то в этом роде?   -  person Keeleon    schedule 05.03.2013
comment
@Keeleon, если время начала раньше времени начала в базе данных или если время окончания больше даты окончания в базе данных. Если дата начала и дата окончания находятся в пределах ограничения, оно работает правильно.   -  person Techy    schedule 05.03.2013


Ответы (2)


Попробуй это:

SELECT * 
FROM tbl_venue 
WHERE venue_id='id' AND
'entered starttime' >= venue_start_datetime
AND 'entered end time' <= venue_stop_datetime
AND 'entered starttime' <= 'entered end time'
person CristiC    schedule 05.03.2013

Вам просто нужно проверить, находится ли введенная дата начала между датой начала и датой окончания или дата окончания entererd находится между датой начала и окончания.

SELECT * FROM tbl_venue WHERE venue_id='id' AND
('entered starttime' BETWEEN venue_start_datetime AND venue_stop_datetime
OR 'entered endtime' BETWEEN venue_start_datetime AND venue_stop_datetime)
person Philipp    schedule 05.03.2013