SELECT * FROM `car` WHERE NOT EXISTS (SELECT 1 FROM `event` WHERE `id_car` = `car`.`id_cars` AND
`date_start` BETWEEN STR_TO_DATE('01.03.2019 15:40:00', "%d.%m.%Y %H:%i:%s") AND STR_TO_DATE('01.03.2019 16:40:00', "%d.%m.%Y %H:%i:%s") OR
`date_end` BETWEEN STR_TO_DATE('01.03.2019 15:40:00', "%d.%m.%Y %H:%i:%s") AND STR_TO_DATE('01.03.2019 16:40:00', "%d.%m.%Y %H:%i:%s") OR
(STR_TO_DATE('01.03.2019 15:40:00', "%d.%m.%Y %H:%i:%s") < `date_start` AND STR_TO_DATE('01.03.2019 16:40:00', "%d.%m.%Y %H:%i:%s") > `date_end`))
SELECT *,
unix_timestamp(STR_TO_DATE(date_start, "%d.%m.%Y %H:%i:%s")) as st,
unix_timestamp(STR_TO_DATE(date_end, "%d.%m.%Y %H:%i:%s")) as en
FROM event e having st > unix_timestamp(STR_TO_DATE('01.03.2019 13:40:00', "%d.%m.%Y %H:%i:%s")) and en < unix_timestamp(STR_TO_DATE('01.03.2019 14:30:00', "%d.%m.%Y %H:%i:%s"))
SELECT * FROM `car` WHERE
(`id_cars` NOT IN
(SELECT `id_car` AS `id_cars` FROM `event` WHERE
`date_start` BETWEEN '01.03.2019 15:40:00' AND '01.03.2019 16:40:00' OR
`date_end` BETWEEN '01.03.2019 15:40:00' AND '01.03.2019 16:40:00' ))
SELECT * FROM `car` WHERE
(`id_cars` IN
(SELECT `id_car` AS `id_cars` FROM `event` WHERE
`date_start` NOT BETWEEN '01.03.2019 15:40:00' AND '01.03.2019 16:40:00' OR
`date_end` NOT BETWEEN '01.03.2019 15:40:00' AND '01.03.2019 16:40:00' ))
SELECT * FROM `car` WHERE
(`id_cars` NOT IN (SELECT `id_car` AS `id_cars` FROM `event`
WHERE (`date_start` >= STR_TO_DATE('01.03.2019 15:40:00', "%d.%m.%Y %H:%i:%s")) AND (`date_end` <= STR_TO_DATE('01.03.2019 18:40:00', "%d.%m.%Y %H:%i:%s"))))
SELECT * FROM `event`
WHERE
'01.03.2019 15:40:00' NOT BETWEEN `date_start` AND `date_end` OR
'01.03.2019 16:40:00' NOT BETWEEN `date_start` AND `date_end`
SELECT
*
FROM car c
WHERE c.id_cars NOT IN (SELECT
viewevent.id_car AS id_cars
FROM viewevent
WHERE viewevent.date_start < :end_date
AND viewevent.date_end > :start_date)
$sub = Viewevent::find()->select('id_car')
->andWhere(['<', 'date_start', date_create_from_format('d.m.Y H:i:s', $date_2)])
->andWhere(['>', 'date_end', date_create_from_format('d.m.Y H:i:s', $date_1) ]);
$sub = Viewevent::find()->select('id_car')
->andWhere(['<', 'date_start', $date_2) ])
->andWhere(['>', 'date_end', $date_1) ]);
var date = $('#event-date_end-disp').datetimepicker('getDate')
Я создал бы таблицу и хранил бы там эти данные, например:
id; дата; оператор; начало работы; завершение работы.
4; 4 Feb; Name operator; 8.00; 17.00;
5; 4 Feb; Name operator; 8.00; 17.00;
6; 5 Feb; Name operator; 8.00; 12.00;
Я делал, но скорее всего делал не совсем правильно:
Есть таблица со "постоянным" расписанием, типа Иван Иванович в субботу работает с 9 до 18.
(id, workerId, weekday, fromTime, tillTime)
Есть вторая таблица, в ней храним изменения в стандартном расписании, типа в понедельник выйти не сможет, зато в воскресение поработает сверхурочно.
(id, workerId, type ENUM ('vacant', 'closed'), date, fromTime, tillTime)
Есть таблица записей, она же таблица занятых таймслотов:
(id, workerId, day, time, timeslotDescription)
При записи на определенное время в ней создается запись.
Расписание, когда можно записаться строиться таким образом:
- смотрим по первой таблице когда рабочее время,
- смотрим по второй таблице нет ли изменений на это время в этот день,
- смотрим по 3й таблице когда не занято время для записи, выводим свободные таймслоты для записи.
Вам в любом случае необходимо будет выстраивать график определенного человека, он может работать только в определенные дни, с определенного по определенный час и тд
Сразу показывает недальновидность вашего решения.
Я даже больше скажу, google calendar + trello решит вообще всю проблему вашей задачи. Но вам же деньги за другое платят, верно?
Никто за вас это делать не будет.
А вот фиг вам, я бы выбрал его с хорошо задументированным API для работы. Но разумеется, брать нужно js плагин, а не библиотеку адаптированную для yii2.
Из плюсов - ajax подгрузка, отображение разных дней, линии занятости в дней, разная подсветка. Другое дело - сможете ли вы ее осилить.
Еще один из вариантов - это указание времени, как это делают в вк, через дропдауны. Так что решений много, вы просто ооочень очень плохо их ищите.
<img src="<?= $message->embed($logo); ?>
, да, я написал, но все равно картинка прикрепляется как вложение к письму, но это должно же работать