【问题标题】:Compare start of month till date to same period last month MySQL将月初至今与上个月 MySQL 的同一时期进行比较
【发布时间】:2018-03-09 00:27:42
【问题描述】:

我正在尝试比较从月初到今天的总购买量与上个月和前一个月的同一时期。

例如,3 月 1 日至 7 日,与 2 月 1 日至 7 日和 1 月 1 日至 7 日相比

到目前为止,我已经能够获取到日期的月份,但是我必须手动输入上个月的日期来比较,我应该使用什么查询来自动获取这些以前的日期?

当前代码

SELECT *,
current_downloads/M_1 AS `M_1_Ratio`,
current_downloads/M_2 AS `M_2_Ratio`
FROM 
(SELECT count(*) AS current_downloads
FROM `purchase`
WHERE date(`purchase`.`timestamp`) >= DATE_FORMAT(NOW() ,'%Y-%m-01')) t1
JOIN 
(SELECT count(*) AS M_1
FROM `purchase`
WHERE date(`purchase`.`timestamp`) BETWEEN {{date3}} AND {{date4}}) t2
JOIN 
(SELECT count(*) AS M_2
FROM `purchase`
WHERE date(`purchase`.`timestamp`) BETWEEN {{date5}} AND {{date6}}) t3

【问题讨论】:

    标签: mysql


    【解决方案1】:

    您可以使用 DATE_SUB() 进行这些计算并更改要减去的 INTERVAL,可以是一两个月

    例如

    SELECT DATE(NOW());
    +-------------+
    | DATE(NOW()) |
    +-------------+
    | 2018-03-08  |
    +-------------+
    
    SELECT DATE_SUB(DATE_FORMAT(NOW(),'%Y-%m-01'), INTERVAL 1 MONTH);
    +-----------------------------------------------------------+
    | DATE_SUB(DATE_FORMAT(NOW(),'%Y-%m-01'), INTERVAL 1 MONTH) |
    +-----------------------------------------------------------+
    | 2018-02-01                                                |
    +-----------------------------------------------------------+
    
    SELECT DATE_SUB(DATE(NOW()), INTERVAL 1 MONTH);
    +-----------------------------------------+
    | DATE_SUB(DATE(NOW()), INTERVAL 1 MONTH) |
    +-----------------------------------------+
    | 2018-02-08                              |
    +-----------------------------------------+
    

    【讨论】:

    • 太棒了!谢谢你。按计划工作。
    猜你喜欢
    • 2020-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多