@sane4e4ek

Сравнение дат в Mysql?

Всем привет.
Понимаю, что вопрос может быть тривиальным и я смотрю не стой стороны на него но голова уже кипит и вообще нифига не соображает.
Вообщемто суть вопроса:
Есть некая таблца в БД, у нее есть 2 поля date_start и date_end - начало отпуска и конец отпуска, задается в формате YYYY-MM-DD.
эти поля, будут у всех сотрудников.
задача следующая - вывести сотрудников у которых пересекаются даты отпусков.
к примеру сотрудника №1 date_start = 2017-05-20 и date_end 2017-06-05. У сотрудника №2 date_start = 2017-06-01 и date_end 2017-06-20.
как составить запрос в MySQL чтобы показало что эти промежтки времени пересекаются
  • Вопрос задан
  • 2145 просмотров
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
SELECT * 
  FROM `table` AS `t1`
  JOIN `table` AS `t2` ON `t1`.`user_id` < `t2`.`user_id` 
    AND `t1`.`date_start` <= `t2`.`date_end` AND `t2`.`date_start` <= `t1`.`date_end`
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
denman1985
@denman1985
SQL, Oracle Forms/Reports dbd
select t1.*, t2.*
from table t1 join table t2 on (((t1.d_beg >= t2.d_beg and t1.d_beg <= t2.d_end) or (t1.d_end >= t2.d_beg and t1.d_end <= t2.d_end)) and t1.id_sotr <> t2.id_sotr)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы