Запрос MySQL для расчета предыдущего месяца

Я хотел бы рассчитать общую сумму заказа в предыдущем месяце.

Я получил запрос на получение данных за текущий месяц с текущей даты.

SELECT SUM(goods_total) AS Total_Amount FROM orders WHERE order_placed_date >= date_sub(current_date, INTERVAL 1 MONTH); 

Теперь, как я могу получить данные за предыдущие месяцы, за исключением этого месяца.

Например, в этом месяце (июль) я составил 15 000 долларов, а в прошлом месяце (июнь) я составил 14 000 долларов.

Я получаю $ 15 000, выполнив указанный выше запрос.

Но я не знаю, как рассчитать предыдущие месяцы.

Здесь вы можете использовать это, чтобы получить дату между 1-м и последним месяцем в MySQL:

... order_placed_date BETWEEN DATE_FORMAT(NOW() - INTERVAL 1 MONTH, '%Y-%m-01 00:00:00') AND DATE_FORMAT(LAST_DAY(NOW() - INTERVAL 1 MONTH), '%Y-%m-%d 23:59:59')

Я обнаружил, что запрос Артема ничего не возвращал с последнего дня предыдущего месяца (предположительно, поскольку BETWEEN рассчитывал со времен 00:00:00 последнего дня).

Кажется, это работает для меня в предыдущем месяце.

 order_placed_date BETWEEN DATE_FORMAT(NOW() - INTERVAL 1 MONTH, '%Y-%m-01') AND DATE_FORMAT(NOW() ,'%Y-%m-01') 

Самое простое решение:

 SELECT SUM(goods_total) AS Total_Amount FROM orders WHERE YEAR(order_placed_date) = YEAR(CURDATE() - INTERVAL 1 MONTH) AND MONTH(order_placed_date) = MONTH(CURDATE() - INTERVAL 1 MONTH) 

Если вы ленивы, то удобно использовать

...date_format(order_placed_date, '%Y-%m') = date_format(now() - INTERVAL 1 MONTH, '%Y-%m')

Я думаю, что это также повышает читаемость.

Вот еще один способ, который я нашел:

 SELECT SUM(goods_total) AS Total_Amount FROM orders WHERE SUBSTRING(o.order_placed_date FROM 1 FOR 7) = SUBSTRING(CURRENT_DATE - INTERVAL 1 MONTH FROM 1 FOR 7) 

Это тоже работает.

здесь другое решение – без операции

 SELECT SUM(goods_total) AS Total_Amount FROM orders WHERE DATE(order_placed_date) BETWEEN DATE_ADD(LAST_DAY(DATE_SUB(NOW(), INTERVAL 2 MONTH)), INTERVAL 1 DAY) AND LAST_DAY(DATE_SUB(NOW(), INTERVAL 1 MONTH)); 
  • Расширенный MySql-запрос: обновить таблицу с информацией из другой таблицы
  • Как узнать пароль администратора MySQL
  • MySQL: ALTER IGNORE TABLE дает «Нарушение ограничения целостности»
  • Пусть пользователи MySQL создают базы данных, но разрешают доступ только к собственным базам данных
  • Использование MySQL-запроса для перемещения строк для создания рекурсивного дерева
  • Как сохранить и получить изображение на моем сервере в java webapp
  • MySQL - «Корневой элемент отсутствует»
  • LAST_INSERT_ID () MySQL
  • MySQL: многие таблицы или многие базы данных?
  • Одна таблица Mysql с несколькими столбцами TIMESTAMP
  • Длина индекса varchar MySQL
  • Interesting Posts
    Давайте будем гением компьютера.