Как сравнить, если время между двумя датами находится между двумя другими датами? - PullRequest
0 голосов
/ 25 марта 2019

Я хочу сравнить, если время между $ begin и $ end находится между временем начала и окончания.

Моя таблица имеет следующий формат:

id - имя - время начала (в datetime) - время окончания (в datetime)

Пример записи в таблице:

32 - тест - 25.03.2019-5: 00 pm - 25.03.2019-6: 15 pm

Пример: * * один тысяча двадцать-одна

$ начало: 16:45
$ end: 6:30 pm

Этот пример должен дать мне запись с идентификатором 32, потому что временной интервал между $ begin и $ end уже находится в моей таблице!

SELECT * FROM timetable WHERE FROM_UNIXTIME($begin) BETWEEN starttime AND endtime OR FROM_UNIXTIME($end) BETWEEN starttime AND endtime 

1 Ответ

0 голосов
/ 25 марта 2019

Как вы сказали в комментариях, у вас есть begin и end значения в UNIX_TIMESTAMP, поэтому вот запрос для проверки получения желаемого результата:

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

SELECT * 
FROM timetable 
WHERE $begin >= UNIX_TIMESTAMP(`starttime`)
AND $end <= UNIX_TIMESTAMP(`endtime`) 
AND $begin < $end

Как это работает:

$begin >= UNIX_TIMESTAMP(`starttime`)

Проверяется, больше ли время начала, чем время начала, сохраненное в базе данных, или равно ему.

$end <= UNIX_TIMESTAMP(`endtime`) 

Он проверяет, меньше ли время окончания или равно времени окончания, сохраненному в базе данных.

$begin < $end

Он проверяет, больше ли время окончания, чем время начала.

Надеюсь, это поможет:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...