Date 1 :- 2014-09-27 10:00:00
Date 2 :- 2014-09-29 11:00:00
Этот диапазон хранится в базе данных, и это означает, что пользователь указал диапазон времени в течение 2 дней с 27 до 29 и с 27 -> 10:00:00 до 29 -> 11:00:00. Это означает, что пользователь будет доступен с 10 до 11 утра с 27 по 29 2014 года.
Теперь, если я передам 2014-09-28 13:00:00, который находится в диапазоне дат, а также во временном диапазоне, потому что пользователь указал весь день для него, как видно из диапазона.
SELECT * FROM TABLE_NAME WHERE Id = $Id AND DATE('$currentDate') BETWEEN DATE(From_DateTime) AND DATE(To_DateTime) AND TIME('$timeHour') BETWEEN TIME(From_DateTime) AND TIME(To_DateTime)
From_DateTime = Date1
To_DateTime = Date2
currentDate = 2014-09-28
timeHour = 13:00:00
Теперь проблема в том, что логически переданный параметр находится в пределах диапазона, но при использовании запроса его нет, потому что во ВРЕМЕНИ не проверяется дата, 13 не находится между 10 & 11 так что не работает. Я также попробовал DATETIME, но он не работает, так как выдает ошибку.
Мне нужен способ сопоставить дату & время как в одно и то же время. Любой, имеющий какие-либо предложения. Я использую PHP в качестве языка программирования.
Если значения хранятся в формате DATETIME, как этот формат, который вы упомянули
Date 1 :- 2014-09-27 10:00:00
Date 2 :- 2014-09-29 11:00:00
Тогда вам даже не нужна вся эта сложность. Просто используйте обычные операторы сравнения
SELECT * FROM yourTABLE
WHERE startDate >= '2014-09-27 13:00:00'
AND endDate <= '2014-09-29 10:00:00'
Конечно, вы можете использовать ваши переменные PHP вместо дат тестирования, которые у меня есть в запросе. Вы можете отформатировать ваши значения PHP, чтобы они соответствовали формату даты и времени MySQL.
Если вы ожидаете большой результат или большую базу данных, я бы предложил вам использовать «МЕЖДУ».
Но хотелось бы уточнить, в вашей схеме базы данных есть 2 поля для сравнения? А именно «To_DateTime» и «From_DateTime»? Если так, я поддержал ответ Хэнки.