Список дат в MySQL

Понадобилось мне получить список дат оказания услуг на определенный период, причем в базе есть только записи в какой день надели она оказывается. Искал как можно с генерировать не существующие строки в MySQL. Остановился на способе использования донорной таблицы размером не менее нужных дней. У меня это оказалось таблица с городами.

Вот собственно сам запрос.


SET @rownum:=-1;

SET @d_begin:='2009-04-10'; /* Начало периода*/

SET @d_end:='2009-12-20';   /* Конец периода*/

SELECT d,WEEKDAY(d) AS day

FROM (

    SELECT adddate(@d_begin,interval @rownum:=@rownum+1 DAY) d FROM CITY /*Генерируем временную таблицу*/

) t

WHERE t.d<=@d_end

    AND WEEKDAY(d) IN (

        SELECT ws.id_week FROM WEEK_SERVICE ws WHERE ws.id_service=214 /* Фильтруем по нужным дням недели*/

    )

 

Может кому то пригодится. Если есть вариант лучше или предложения пишите в комментариях:)

Читать далее...

Комментариев(1)