Выбор всех дат месяца без таблицы - MySQL
Формулировка задачи:
Друзья мои, приветствую!
Что-то я не смог найти решения, казалось бы, тривиальной задачи - необходимо получить выборку дат текущего месяца без выборки из какой-то конкретной таблицы.
Вид должен быть примерно такой:
то есть, я понимаю, что в итоге должно быть что-то вроде
А вто что дожно быть в SELECT и нужен ли вообще тут FROM мне не очень понятно.
Заранее благодарен!
01.02.2016 |
02.02.2016 |
03.02.2016 |
... |
28.02.2016 |
29.02.2016 |
... WHERE MONTH(DATE)=MONTH(CURDATE()) AND YEAR(DATE)=YEAR(CURDATE())
Решение задачи: «Выбор всех дат месяца без таблицы»
textual
Листинг программы
mysql> SELECT DATE(ADDDATE('2012-02-10', INTERVAL @i:=@i+1 DAY)) AS DATE FROM existing_table HAVING @i < DATEDIFF('2016-02-15', '2016-02-10'); +------------+ | DATE | +------------+ | 2016-02-10 | | 2016-02-11 | | 2016-02-12 | | 2016-02-13 | | 2016-02-14 | | 2016-02-15 | +------------+
Объяснение кода листинга программы
В данном коде выполняется выборка всех дат в заданном месяце (в данном случае февраль 2016 года) из таблицы existing_table
.
DATE(ADDDATE('2012-02-10', INTERVAL @i:=@i+1 DAY))
— это формула для вычисления даты, которая добавляется к начальной дате2012-02-10
на один день при каждой итерации. Переменная@i
используется для хранения количества итераций.FROM existing_table
— отбирается информация из таблицыexisting_table
.HAVING @i < DATEDIFF('2016-02-15', '2016-02-10')
— используется условие, чтобы отобрать только те строки, в которых значение переменной@i
меньше разницы между конечной и начальной датами (2016-02-15
и2016-02-10
соответственно). Это позволяет ограничить количество итераций до числа дней в заданном периоде.AS DATE
— задается псевдоним для вычисляемого столбца с датами. Результатом выполнения запроса будет список дат в форматеYYYY-MM-DD
, начиная с2016-02-10
и заканчивая2016-02-15
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д