Здравствуйте.
Информация:
Есть таблица events со столбцами date_start, date_end и т.д. Надо выделить дни в месяце которые входят в промежуток между date_start и date_end. Сейчас у меня происходит так: вытаскиваются записи у которых месяц date_start совпадает с текущим месяцем
select *
from events
where active = '1'
and year(date_start) = '2018'
and month(date_start) = '04'
and lang = 'ru'
order by date_start asc, time_start asc
Потом я циклом перебираю записи и записываю числа активных дней в отдельный массив
foreach ($events as $event) {
$dateStart = date('j', strtotime($event->date_start));
$dateEnd = date('j', strtotime($event->date_end));
for ($i = $dateStart; $i <= $dateEnd; $i++) {
if (in_array($i, $active)) continue;
$active[] = (int)$i;
}
}
Но это работает только для дат в текущем месяце, но также могут существовать события которые начинаются в одном месяце, а заканчиваются в другом, также и с годом. Поэтому немного переделал запрос
select *
from events
where active = ?
and year(date_start) <= ?
and year(date_end) >= ?
and month(date_start) <= ?
and month(date_end) >= ?
and lang = ?
order by date_start asc, time_start asc
Но при этом возникла потребность проверять месяц в зависимости от года. Т.е. сравнить год и если год из таблицы и текущий совпадают проверить еще и месяц. Так как в sql запросах я не силен или даже слаб, не могу додуматься как это реализовать.
Вопрос:
Как можно проверять месяц если год равен текущему году?
И можно ли избавиться от этого цикла и выполнить поставленную задачу лишь запросом? Как?
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
В yii2 есть public $title ($this->title); Где он создан и как создать свой?
Посоветуйте видео уроки по WPF и ASPNET (С#) на русском