Вибірка записів за поточний і минулий місяць SQL
Найчастіше при роботі з базами даних, нам вимагає показати записи за попередній відрізок часу, за минулий місяць або тиждень наприклад. Про те як це реалізувати в MySql, ми розглянемо нижче.
І так, щоб це реалізувати, наше поле з датою, має бути формату datetime. Приклад: є таблиця замовлень - order в ній є поле datetime - типу DATETIME, поле - сума замовлення, тип INT.
І нам потрібно дізнатися кількість і суму замовлень за сьогоднішній день, за минулий місяць, і за попередній місяць.
Почнемо з вибірки об'єктів за сьогоднішній день:
Зупинимося докладніше на деяких моментах. 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 записи за сьогоднішній день, поточний і минулий місяць.
Правила передруку
Шановний відвідувач сайту!
Нижче узгоджено умови використання і передруку матеріалів сайту /
Всі матеріали даного сайту підготовлені для Вас особисто мною.