MySQL Query to calculate the Previous Month

后端 未结 6 810
野的像风
野的像风 2020-12-02 20:53

I would like to calculate total order amount in the previous month.

I got the query for getting the data for the present month from the current date.



        
相关标签:
6条回答
  • 2020-12-02 21:19

    Here is another way i found:

    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) 
    

    This works as well.

    0 讨论(0)
  • 2020-12-02 21:21

    here another solution - without stringoperation

    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));
    
    0 讨论(0)
  • 2020-12-02 21:24

    If you are lazy it's kinda convenient to use

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

    I think it also increases readability.

    0 讨论(0)
  • 2020-12-02 21:29

    Simplest solution:

    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)
    
    0 讨论(0)
  • 2020-12-02 21:34

    I found that Artem's query wasn't returning anything from the last day of the previous month(presumably as BETWEEN would calculate from time 00:00:00 of the last day).

    This seems to work for me for the previous month.

    order_placed_date BETWEEN DATE_FORMAT(NOW() - INTERVAL 1 MONTH, '%Y-%m-01')
    AND DATE_FORMAT(NOW() ,'%Y-%m-01')
    
    0 讨论(0)
  • 2020-12-02 21:39

    Here you go, use this to get the date between the 1st of last month and the last of last month in 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')
    
    0 讨论(0)
提交回复
热议问题