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;

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张仰泽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值