首页 > 数据库 >拆解跨天时间(mysql游标循环)-在转来的基础上增加一些更改

拆解跨天时间(mysql游标循环)-在转来的基础上增加一些更改

时间:2024-03-12 15:22:05浏览次数:40  
标签:-- brand 游标 bj id1 跨天 mysql declare

尊重作者,原文链接:https://blog.csdn.net/liminghui4321/article/details/102763052

原始数据表:

需要将上面的时间段转成每一天的记录:

 在原文的基础上作了一些更改:

1、在表sales上增加一个字段bj:alter table sales add column bj int DEFAULT 0 null;
2、存储过程基础上增加了一些更改:

drop PROCEDURE if EXISTS p4;
create procedure p4()
begin
declare id1,gt,it,bjj int;
declare brand varchar(15);
declare sdate,edate,mdate date;
declare flag int default 0;
-- 声明游标
declare cur cursor for select *,datediff(enddate,startdate) from sales where bj =0;
declare continue handler for not found set flag = 1;
-- select *,datediff(enddate,startdate) from sales where bj=0;

-- 打开游标
open cur;
-- 获取结果
l2:loop

  fetch cur into id1,brand,sdate,edate,bjj,gt;
  if flag=1 then -- 当无法fetch会触发handler continue
     select 'flag=1 not found';
     leave l2;
  end if;
  -- 逻辑处理,拆解跨天
  IF(gt>=0) THEN
    set it=0;
    select id1,brand,sdate,edate,bjj,gt;
    while it<=gt DO
        insert into sales2(id,brand,tdate) values(id1, brand,date_add(sdate,interval it day));
        set it=it+1;
    end while;
    update sales set bj=1 where id = id1;
  end if;
  -- 关闭游标
end loop;
close cur;
end;

call p4();

----

 

标签:--,brand,游标,bj,id1,跨天,mysql,declare
From: https://www.cnblogs.com/qima/p/18068393

相关文章

  • MySQL(八):MySQL之索引
    1、MySQL索引及作用MySQL官网:索引(Index)是帮助MySQL高效获取数据的数据结构。索引是数据结构。一个索引就是一个B+树,加快数据查询的速度。一个select查询语句在执行过程中一般最多能使用一个辅助索引,即使在where条件中用了多个辅助索引。2、InnoDB存储引擎支持的常见索......
  • MYSQL语法:左连接、右连接、内连接、全外连接
    概念leftjoin(左连接):返回包括左表中的所有记录和右表中连接字段相等的记录。rightjoin(右连接):返回包括右表中的所有记录和左表中连接字段相等的记录。innerjoin(内连接):只返回两个表中连接字段相等的行。fulljoin(全外连接):返回左右表中所有的记录和左右表中连接字段相等的记录......
  • MySQL 精通与优化
    目录1.数据库管理与优化1.1.用户管理和权限控制1.2.数据库的备份和恢复1.3.数据库的性能优化和调优1.4.锁定和事务管理2.高可用性与容错性2.1.主从复制(Master-SlaveReplication)2.2.主主复制(Master-MasterReplication)2.3.数据库集群技术3.实践与项目案例3.1.......
  • typeorm mysql blob 存储base64
    typeormmysqlblob存储base64在TypeORM中,要将Base64数据存储到MySQL数据库的BLOB字段,您需要先将Base64字符串转换为Buffer,然后使用TypeORM的实体管理器来保存。以下是一个简单的例子:首先,定义您的实体:  import{Entity,PrimaryGeneratedColumn,Column}from......
  • mysql for update是锁表还是锁行
    转载至我的博客https://www.infrastack.cn,公众号:架构成长指南在并发一致性控制场景中,我们常常用forupdate悲观锁来进行一致性的保证,但是如果不了解它的机制,就进行使用,很容易出现事故,比如forupdate进行了锁表导致其他请求只能等待,从而拖垮系统,因此了解它的原理是非常必要的,......
  • WSL基本使用,Ubuntu->docker->MySQL8
    适用于Linux的Windows子系统(WSL)可让开发人员直接在Windows上按原样运行GNU/Linux环境(包括大多数命令行工具、实用工具和应用程序),且不会产生传统虚拟机或双启动设置开销。基本使用安装#此命令将启用运行WSL并安装Linux的Ubuntu发行版所需的功能。wsl--inst......
  • MySQL主从延迟原理详解
    前言在生产环境中,为了满足安全性,高可用性以及高并发等方面的需求,基本上采用的MySQL数据库架构都是MHA、MGR等,最低也得是一主一从的架构,搭配自动切换脚本,实现故障自动切换。上述架构都是通过集群主从复制(Master-Slave)的方式来同步数据。MySQL集群简单架构图:说到主从同步,离不开bi......
  • 部署测试平台-使用docker安装mysql
    1.拉取mysql5.7镜像:dockerpullmysql:5.72.新建数据库挂载目录:mkdir-p/root/data/mysql5.7/conf   配置文件mkdir-p/root/data/mysql5.7/data   数据库数据目录mkdir-p/root/data/mysql5.7/log   数据库日志3.把配置文件my.cnf放到/root/data/m......
  • mysql 索引
    索引是根据表中一列或若干列按照一定顺序建立的列值与记录行之间的对应关系的数据结构,通过索引查询可以提高查询的效率。举个例子:把一个数据表当做一个图书馆,数据表中的一行数据当做一本书,在没有索引的情况下,想要找某一本书时,几乎需要将整个图书馆的书找一遍。当建立了索引后,就......
  • MySQL数据库表关系详解
    MySQL数据库表关系详解(1)一对一一对一关系是最好理解的一种关系,在数据库建表的时候可以将人表的主键放置与身份证表里面,也可以将身份证表的主键放置于人表里面一对一的关系就是一种特殊的多对多的关系,一张表A中的一条记录只能对应另一张表B中的一条记录,另一张表B中的一条记......