获取MySQL中两个日期之间的值差

时间:2018-09-04 14:09:31

标签: mysql sql date

我具有以下表格结构:

page_id   view_count    date
1         30            2018-08-30
1         33            2018-08-31
1         1             2018-09-01
1         5             2018-09-02
...

观看次数在每月的1号重置,并且它的当前值每天存储一次,因此在8月31日,观看次数增加了3(因为33-30)。

我需要做的是通过SQL查询检索两个日期之间的视图计数(差异)。要检索同一月中两个日期之间的观看次数很简单,只需将较大的日期与较低的日期相减即可,但是我不确定在不同月份中的两个日期之间进行检索是如何实现的。如果我想在 2018-08-13 2018-09-13 之间检索数据,我将不得不在 2018-08-31 之间取得区别>和 2018-08-13 ,并将其添加到 2018-09-13 的值中。

此外,我想一次在同一日期之间对所有 page_id 执行此操作,如果可能的话。

1 个答案:

答案 0 :(得分:0)

假设计数器在每个页面上都是唯一的,并且每天将page_id计数器插入表中,我认为这样的解决方案会起作用

日期基于示例, 并应替换为相关参数

SELECT
    v1.view_count + eom.view_count - v2.view_count
FROM
    view_counts v1
    INNER JOIN view_counts v2 ON v2.page_id = v1.page_id AND v2.`date` = '2018-08-13'
    INNER JOIN view_counts eom ON v2.page_id = v.page_id AND eom.`date` = LAST_DAY(DATE_ADD(v.`date`, INTERVAL -1 MONTH))
WHERE
    `date` = '2018-09-13'