MySQL 获取查询两日期之间的所有月份、天数、小时数(包含无数据的月份、天数、小时)
这里主要使用left join,将所有日期放在左边列出,然后再根据日期时间匹配贴上数据。
示例:获取10月份的所有日期;
select r1.Idxdate,max(t2.val) from (SELECT @num :=@num + 1 AS Idx, date_format( adddate( '2018-09-30', INTERVAL @num DAY ), '%Y-%m-%d' ) AS Idxdate FROM station_0.tyc_10000, (SELECT @num := 0) t WHERE adddate( '2018-09-30', INTERVAL @num DAY ) < date_format('2018-10-31', '%Y-%m-%d')) r1 left join dbo.table2 t2 on r1.Idxdate = DATE_FORMAT(t2.datetime,'%Y-%m-%d') group by r1.Idxdate
运行结果:
同理,可以查询月份、或小时、分钟等;
但,一定要注意、一定要注意、一定要注意
数据表中的数据记录总条数一定要大于查询结果的记录条数;
什么意思呢?
例如上图查询一个月中的每一天的最大数据值,10月有31天,如果该数据表总的历史记录只有20条(没超过31条),那么你执行该语句查询的结果最多也只有20条,即从10月1日到10月20日。