Mysql日期统计自动补充日期,Mysql日期统计日期不连续解决方案

 

================================

©Copyright 蕃薯耀 2022-10-10

https://www.cnblogs.com/fanshuyao/

 

一、定义日期表(临时)


查询出连续的日期,数量7表示一周,可修改成别的,如365

sys_date:

随便一个表,但这个表的数据量一定要大于7(或者更多)这个数量才可以,不然查询的数据数量会少。建议自定义一张表,里面的数据满足查询的数量

SELECT * FROM (
    SELECT
        @date := DATE_ADD(@date, INTERVAL + 1 DAY) date_count
    FROM
    (
        SELECT
        @date := DATE_SUB(CURDATE(), INTERVAL + 7 DAY)
        FROM sys_date --随便一个表,但这个表的数据量一定要大于7(或者更多)这个数量才可以,不然查询的数据数量会少。建议自定义一张表,里面的数据满足查询的数量
        LIMIT 7
    ) TIME
) tt
;

 

 

二、自定义日期表


日期表只是一张中间表,为了查询出充足的数据量(条数),表中的数据不重要,根据业务要求插入数据

--定义日期表,往里面插入1万条数据
CREATE TABLE `sys_date` (
  Id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT 'ID主键'
  ,Remark VARCHAR(20) COMMENT '备注'
 
) ENGINE=INNODB CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT '日期查询表';

 

 

三、Mysql批量插入数据


往表插入1万条数据

/*循环插入*/
 
--drop PROCEDURE insertData;
--定义存储过程
DELIMITER //
CREATE PROCEDURE insertData()
BEGIN
  DECLARE num INT;
  SET num = 1;
  WHILE
    num < 10001 DO
    INSERT INTO sys_date(Remark) VALUES(num);
    SET num = num + 1;
  END WHILE;
END; 
//
 
 
--调用存储过程
CALL insertData();

 

 

四、Mysql按照日期统计(日期连续、自动补充日期)


Mysql日期统计自动补充日期,Mysql日期统计日期不连续解决方案

SELECT tt.* 
,IFNULL(SUM(d.Quantity), 0) Quantity
FROM (
    SELECT
        @date := DATE_ADD(@date, INTERVAL + 1 DAY) `date`
    FROM
    (
        SELECT @date := DATE_SUB(CURDATE(), INTERVAL + 7 DAY)
        FROM sys_date
        LIMIT 7
    ) TIME 
) tt
LEFT JOIN stock_in si ON DATE(si.StockInDate) = tt.date AND si.ApprovalStatus=90
LEFT JOIN stock_in_details d ON d.StockInId = si.StockInId
GROUP BY tt.date
ORDER BY tt.date
;

 

查询一年的示例结果:

date    Quantity
2021-10-11    0
2021-10-12    0
2021-10-13    0
2021-10-14    0
2021-10-15    0
2021-10-16    0
2021-10-17    0
2021-10-18    0
2021-10-19    0
2021-10-20    0
2021-10-21    0
 
…………
 
2022-09-17    0
2022-09-18    0
2022-09-19    0
2022-09-20    5
2022-09-21    305
2022-09-22    0
2022-09-23    0
2022-09-24    0
2022-09-25    0
2022-09-26    0
2022-09-27    177
2022-09-28    0
2022-09-29    10
2022-09-30    3
2022-10-01    0
2022-10-02    0
2022-10-03    0
2022-10-04    0
2022-10-05    0
2022-10-06    0
2022-10-07    0
2022-10-08    0
2022-10-09    0
2022-10-10    0

 

 

(时间宝贵,分享不易,捐赠回馈,^_^)

 

================================

©Copyright 蕃薯耀 2022-10-10

https://www.cnblogs.com/fanshuyao/

 

posted @ 2022-10-10 16:15  蕃薯耀  阅读(815)  评论(0编辑  收藏  举报