Выбор всех дат месяца без таблицы - 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.