美文网首页
mysql返回一段日期内所有天数

mysql返回一段日期内所有天数

作者: 哆啦在这A梦在哪 | 来源:发表于2020-03-05 17:17 被阅读0次

start

开始原因:前端需要反馈一段时间内的日期数据,但是数据库并不是每天都有,就出现日期天数不连续的情况,然而,有需要所有的天数为基准来反馈,就有了以下sql,为大家参考。

思路:

1.获取一段日期内所有连续日期
2.以该日期为基准,右连接你的实际数据表,拼接成完整的数据

注意:

该方法第一天获取不到,需要自己注意,传参时,第一天需要向前一天

返回所有天数sql,其中tablename随便即可,列名称可以自己定

SELECT DISTINCT
    date_format(
        DATE_ADD(
            '2018-08-20',
            INTERVAL id DAY
        ),
        '%Y-%m-%d'
    ) AS `TIME`
FROM
    tablename
WHERE
    DATE_ADD(
        '2018-08-20',
        INTERVAL id DAY
    ) <= '2018-08-26'
ORDER BY time

执行结果:


image.png

实际逻辑sql

SELECT dis,m.date,ifnull(workhour,0) as workhour FROM (
SELECT DISTINCT DATE_FORMAT(DATE_ADD(
            '2020-02-20', INTERVAL id DAY
        ),
        '%Y-%m-%d'
    ) AS date
FROM
    dis_work_daily_use
WHERE DATE_ADD(
        '2020-02-20', INTERVAL id DAY
    ) <= '2020-03-05'
ORDER BY date
) m
LEFT JOIN 
(SELECT dis, DATE,workhour FROM dis_work_daily_use 
WHERE dis = '1917154001' and date BETWEEN '2020-02-20' AND '2020-03-05') n ON m.date=n.date

相关文章

网友评论

      本文标题:mysql返回一段日期内所有天数

      本文链接:https://www.haomeiwen.com/subject/gttqrhtx.html