MySQL查询某个时间段内的所有时间(存储过程实现)

        我个人并不推荐在实际开发中使用存储过程,充满了各种的不方便,之所以写这东西,全在于学习,如果有高手看到我的内容有问题,可以随时指出或向我开炮。 

 创建存储过程:

-- 创建存储过程 getTime
-- param start_time 开始时间(输入参数 时间类型) 
-- param end_time 结束时间(输入参数 时间类型)
CREATE PROCEDURE getTime(IN start_time TIMESTAMP, IN end_time TIMESTAMP)
BEGIN
    -- 定义变量i 默认值为0
    DECLARE i int DEFAULT 0;

    -- 定义变量 num 最大值 默认值为天数差(精度是天)
    -- 此处也可以用 TIMESTAMPDIFF 根据个人需求而定
    -- 比如 精度是分钟 TIMESTAMPDIFF(MINUTE, start_time, end_time)
    DECLARE num  int DEFAULT (SELECT DATEDIFF(end_time,start_time));
    
    -- 创建一个临时表 用于存放数据
    create temporary table time_table(
      -- id
      id int(64) PRIMARY KEY NOT NULL AUTO_INCREMENT,
      -- 时间 
      time datetime NOT NULL);

    -- 循环获取时间
    WHILE i <= num DO

        -- 向临时表中放入数据
        INSERT INTO time_table (`time`)VALUES(DATE_ADD(start_time,INTERVAL i DAY));

        -- i 递增
        set i=i+1;

    -- 结束循环
    END WHILE;

    -- 返回结果
    SELECT time FROM time_table;

    -- 删除临时表
    DROP TABLE time_table;

END;

调用:

call getTime('2021-08-01', '2021-08-19');

 

 

 删除存储过程:

drop procedure if exists getTime;


版权声明:本文为qq_33211189原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。