MySQL - 选择上一年工作日的日期

时间:2017-11-30 15:04:37

标签: mysql date weekday

我有一个表格,其中包含每个日期的日期和销售收入(请参阅下面的示例)。我想将给定日期的收入与去年同一天进行比较。

让一切变得复杂的是,我想比较工作日的销售额,而不是日期。

例如,我想将2017-11-14(星期二)与2016-11-15(星期二)进行比较。

另一个例子是闰日,2016-02-29(星期一)应与2015-03-02(星期一)进行比较。

有没有办法使用MySQL查找前一年相关工作日的日期?

+--------------+--------------+
| log_date     | revenue      |
+--------------+--------------+
| ...          | ...          |
+--------------+--------------+
| 2017-10-01   | 1000         |
+--------------+--------------+
| 2017-10-02   | 3000         |
+--------------+--------------+
| 2017-10-03   | 1500         |
+--------------+--------------+
| ...          | ...          |
+--------------+--------------+

我想出了这个解决方案(可能不那么优雅,但它有效):

SET @this_years_date = '2017-03-31';
SET @last_years_date = DATE(DATE_SUB(@this_years_date, INTERVAL 1 YEAR)) + INTERVAL 
    IF (
        WEEKDAY(@this_years_date) != WEEKDAY(
            DATE(DATE_SUB(@this_years_date,INTERVAL 1 YEAR)) + INTERVAL 1 DAY
        ), 2, 1
    )
DAY;

SELECT revenue FROM table WHERE log_date = @last_years_date;

0 个答案:

没有答案