Выбор всех дат месяца без таблицы - MySQL

Узнай цену своей работы

Формулировка задачи:

Друзья мои, приветствую! Что-то я не смог найти решения, казалось бы, тривиальной задачи - необходимо получить выборку дат текущего месяца без выборки из какой-то конкретной таблицы. Вид должен быть примерно такой:
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())
А вто что дожно быть в SELECT и нужен ли вообще тут FROM мне не очень понятно. Заранее благодарен!

Решение задачи: «Выбор всех дат месяца без таблицы»

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.

  1. DATE(ADDDATE('2012-02-10', INTERVAL @i:=@i+1 DAY)) — это формула для вычисления даты, которая добавляется к начальной дате 2012-02-10 на один день при каждой итерации. Переменная @i используется для хранения количества итераций.
  2. FROM existing_table — отбирается информация из таблицы existing_table.
  3. HAVING @i < DATEDIFF('2016-02-15', '2016-02-10') — используется условие, чтобы отобрать только те строки, в которых значение переменной @i меньше разницы между конечной и начальной датами (2016-02-15 и 2016-02-10 соответственно). Это позволяет ограничить количество итераций до числа дней в заданном периоде.
  4. AS DATE — задается псевдоним для вычисляемого столбца с датами. Результатом выполнения запроса будет список дат в формате YYYY-MM-DD, начиная с 2016-02-10 и заканчивая 2016-02-15.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 3.6 из 5