Вибірка записів за поточний і минулий місяць sql

Вибірка записів за поточний і минулий місяць SQL


Найчастіше при роботі з базами даних, нам вимагає показати записи за попередній відрізок часу, за минулий місяць або тиждень наприклад. Про те як це реалізувати в MySql, ми розглянемо нижче.

І так, щоб це реалізувати, наше поле з датою, має бути формату datetime. Приклад: є таблиця замовлень - order в ній є поле datetime - типу DATETIME, поле - сума замовлення, тип INT.

Вибірка записів за поточний і минулий місяць sql

І нам потрібно дізнатися кількість і суму замовлень за сьогоднішній день, за минулий місяць, і за попередній місяць.

Почнемо з вибірки об'єктів за сьогоднішній день:

Зупинимося докладніше на деяких моментах. COUNT (1) поверне нам число - кількість записів в нашій вибірці.
Функція CURDATE () - повертає сьогоднішню дату.
Відповідно, наша умова російською мовою звучить так - "Обери кількість записів в таблиці order, які задовольняють умові - їх поле datetime більше, ніж поточна дата". Порівняння в межах типу DATETIME абсолютно коректно з точки зору MySQL.

Кількість замовлень за поточний місяць

Трохи ускладнити наш SQL запит.

  • функція MONTH () повертає номер місяця;
  • функція YEAR () повертає рік;
  • функція NOW () повертає поточну дату і час.

Відповідно, в даному SQL запиті ми порівнюємо, дорівнює чи поточний місяць MONTH (NOW ()) місяця замовлення І рівний поточний рік році, в якому було зроблено замовлення. SQL запит для підрахунку загальної суми замовлень практично ідентичний і виглядає так:

функція SUM () виконає підсумовування поля total_price (загальна сума замовлення) всіх записів за поточний місяць і поверне однина - загальна сума замовлень за поточний місяць.

Незважаючи на те, що запит вище повністю задовольняє нашого завдання, він не оптимальний.
Оптимальний SQL запит в даному випадку буде виглядати так:

Функція LAST_DAY () повертає дату, зміщену на останній день місяця.
Відповідно, конструкція LAST_DAY (CURDATE ()) + INTERVAL 1 DAY - INTERVAL 1 MONTH поверне нам перший день поточного місяця.
У підсумку, наша умова зводиться до виду "повернути всі записи, в яких дата більше, ніж перший день поточного місяця, але менше, ніж перший день наступного місяця".

Кількість замовлень за попередній місяць

У нас з'явилася нова функція роботи з датами - DATE_SUB ().
Вона займається тим, що "віднімає" з однієї дати (переданої першої) іншу.

На жаль, урок підійшов до кінця, але вже завтра з'явиться новий і дуже цікавий.

P.S. Сьогодні ми навчилися отримувати з бази даних MySql записи за сьогоднішній день, поточний і минулий місяць.

Правила передруку

Шановний відвідувач сайту!
Нижче узгоджено умови використання і передруку матеріалів сайту /
Всі матеріали даного сайту підготовлені для Вас особисто мною.

Уроки і статті