`

MySQL根据当天的日期生成单号

 
阅读更多

下面是MySQL的一个生成单号的实例。

单号生成规则是这样的,传递一个表名,然后根据表名查询出 表中的第一个列为id取出最大值然后判断最大值是否包含今天的日期,如果不包含则按照当前的日期YYYYMMDD日期生成比如格式为:

20140401001,否则,就在最大日期上进行加1.

然后返回单号。

 

具体代码如下:

  

#创建存储过程;
DELIMITER $$ 
CREATE PROCEDURE genBillsNoPROC(IN tableName VARCHAR(30),OUT billsNoResult VARCHAR(100))
BEGIN 
DECLARE sql_1 VARCHAR(1000); 
DECLARE sql_2 VARCHAR(1000); 
DECLARE sql_3 VARCHAR(1000); 
DECLARE sql_4 VARCHAR(1000); 
DECLARE sql_5 VARCHAR(1000);
SET sql_1  =  CONCAT("SELECT COLUMN_NAME into @colName FROM information_schema.COLUMNS WHERE table_name='",tableName,"' limit 0,1");
#执行sql_1SQL语句;
SET @frist_sql=sql_1; 
PREPARE stmt1 FROM @frist_sql; 
EXECUTE stmt1; 

SET sql_2 = CONCAT("select max(",@colName,"),instr(max(",@colName,"),DATE_FORMAT(NOW(),'%Y%m%d')) into @tableMaxValue,@sqlResult from ",tableName);
#执行sql_2SQL语句;
SET @second_sql=sql_2; 
PREPARE stmt2 FROM @second_sql; 
EXECUTE stmt2; 

SET sql_3 = CONCAT("SELECT t.bills_role_prefix into @billsPreFix FROM t_bills_role_setting t WHERE t.bills_table_name ='",tableName,"'");
#执行sql_3SQL语句;
SET @three_sql=sql_3; 
PREPARE stmt3 FROM @three_sql; 
EXECUTE stmt3; 

#打印变量的值;
SELECT @sqlResult;

IF @sqlResult > 0 THEN
	#根据最大的单号如:SP20140101001 单号前缀SP ,最大单号长度-单号前缀长度 = 数字部分 ->转成数字 +1生成下一个单号
	SET sql_4 = CONCAT("select CONVERT(right('",@tableMaxValue,"',length('",@tableMaxValue,"') - length('",@billsPreFix,"')),SIGNED)+1 into @billsNo from dual");
	#执行sql_4SQL语句;
	SET @four_sql=sql_4; 
	PREPARE stmt4 FROM @four_sql; 
	EXECUTE stmt4; 
ELSE
	SET sql_5 = CONCAT("SELECT concat(DATE_FORMAT(NOW(),'%Y%m%d'),'001') into @billsNo from dual");	
	#执行sql_5SQL语句;
	SET @five_sql=sql_5; 
	PREPARE stmt5 FROM @five_sql; 
	EXECUTE stmt5; 
END IF;

#设置返回结果(单号前缀+数字部分如:20140410001);
SET billsNoResult := CONCAT(@billsPreFix,@billsNo); 
END$$ 

 

 

##执行存储过程 
CALL genBillsNoProc('t_common_system',@data_t); 
SELECT @data_t maxValue;

 

返回结果:

SJZD20140410011

分享到:
评论

相关推荐

    Oracle/MySQL以当前日期加顺番 生成编号

    //生成最大编号 规则为当前日期+6位顺番, //没有记录时,当前日期+000001 //当前日期比从数据库取得的最大日期大时, 当前日期+000001 //当前日期等于从数据库取得最大日期,顺番+1

    mysql自动生成实体类

    "mysql自动生成实体类"就是这样一个工具,它能够帮助开发者快速地根据MySQL中的表结构生成对应的Java实体类,极大地减少了手动编写代码的工作量。 生成实体类的主要目的是实现对象关系映射(Object-Relational ...

    mysql数据库自动生成xml文件

    MyBatis Generator是一款强大的Java工具,它可以自动根据MySQL数据库的表结构生成Java Model类、Mapper接口和XML配置文件,这些文件包含了操作数据库所需的DAO方法。 要使用MyBatis Generator,你需要配置一个XML...

    MySQL高并发下生成唯一订单号的存储过程

    这个是用mysql写的存储过程,搭配里面一张数据表使用,达到高并发情况下获得唯一订单号的目的;原理:按照一定规则生成订单号后,把订单号插入数据表后,再返回给用户,由于数据表设置了主键,也就是当数据表中存在...

    generator-mysql根据mysql数据库生成实体类并“生成注释”

    `generator-mysql`是一个实用工具,它基于`generator-mybatis`项目,用于自动从MySQL数据库生成实体类,大大简化了开发过程,特别是在处理大量数据表时。这个工具的亮点在于它不仅生成实体类,还能够生成字段的注释...

    MySQL表自动生成Java实体类

    这里提到的工具或脚本可以自动从MySQL数据库中读取表结构,然后根据结构生成对应的Java源代码。这个过程涉及到以下步骤: 1. **数据库连接**: 首先,需要配置数据库连接字符串,包括数据库URL、用户名、密码等信息...

    mysql实体类生成工具

    mysql生成java实体类

    MySQL 安装版 自动生成密码

    MySQL 安装版 自动生成密码

    mysql数据库字典一键生成工具

    Mysql数据库字典一键生成工具,傻瓜式操作,一键即可,成功率百分之九十九!支持Mysql、SQL2005、Oracel三种数据库;提供CHM、WORD、HTML三种导出格式,并且可以自定义HTML风格;

    MySQL数据库生成C#实体类工具

    通过上述命令,`FreeSql.Generator`将会根据指定的MySQL数据库结构生成相应的C#实体类。这些实体类可以直接在您的.NET应用程序中使用,大大简化了数据访问层的开发工作。 #### 五、总结 本文介绍了如何使用`...

    mysql数据表直接生成word文档数据字典

    MySQL数据表直接生成Word文档数据字典是一种便捷的方法,它帮助数据库管理员和开发人员快速整理并记录数据库结构信息。在数据库设计和维护过程中,数据字典是至关重要的,它提供了关于数据库模式、字段、类型、约束...

    mysql雪花算法生成唯一整型ID主键的实现方法

    MySQL 雪花算法生成唯一整型ID主键的实现主要针对大数据环境下,需要大量生成全局唯一ID的需求。雪花算法是一种分布式ID生成策略,由Twitter开源,其设计目标是在分布式系统中生成具有全局唯一性、有序性和高并发性...

    Mysql数据库文档生成工具(含使用说明)

    MySQL数据库文档生成工具是一款高效实用的软件,专为MySQL数据库设计者和开发者提供方便,能够自动生成详尽的数据库设计文档。这款工具极大地简化了在项目验收阶段对数据库设计进行整理和呈现的工作流程,尤其适合...

    mysql mybaits代码自动生成工具

    MySQL MyBatis 代码自动生成工具是开发过程中提高效率、减少重复劳动的神器。它能够根据数据库中的表结构,自动生成对应的 Java实体类、MyBatis的Mapper接口及XML配置文件,大大简化了数据访问层(DAO)的开发工作。...

    Spring Cloud+mybatise + mysql 自动生成代码工具

    - 同时,根据表的操作(如CRUD),自动生成MyBatis的Mapper接口和XML配置文件,这些文件包含了SQL查询语句。 - 对于服务层(Service),工具会生成服务接口和服务实现类,包括对数据库操作的调用。 - 最后,对于控制...

    mysql数据字典生成工具,一键生成,简单易用

    因此,MySQL数据字典生成工具应运而生,它们可以一键生成清晰、结构化的数据字典文档,方便用户快速了解数据库结构,便于维护和管理。 三、数据字典生成工具的特点 1. 一键生成:通过简单的操作,工具就能自动生成...

    MYSQL逆向工程自自动生成xml及PO文件

    MySQL逆向工程是一种高效的方法,它允许开发人员从现有的数据库结构快速生成相关的代码,如XML映射文件和Java PO(Plain Old Java Object)类。在Java Web开发中,特别是使用MyBatis框架时,这种技术可以极大地提高...

    一个php mysql的自动文件生成器

    - 自动生成的代码可能不完全符合特定项目的需求,需要根据实际情况进行调整。 - 安全性:生成的代码可能没有考虑到SQL注入等安全问题,使用时需进行额外的安全检查和优化。 - 性能优化:虽然方便,但默认生成的...

    java代码生成器(mysql版)

    这个工具专门针对MySQL数据库,能够根据数据库中的表结构自动生成对应的Java实体类、DAO接口、Service接口及其实现类、Controller层代码,极大地提高了开发效率,减少了手动编码的工作量。 在Java开发中,尤其是...

    mysql自动生成时间1

    在MySQL数据库中,"mysql自动生成时间1"的设置通常是指如何自动为表中的某个字段填充当前的时间戳。时间戳(TIMESTAMP)是一种用于记录数据插入或更新时精确时间的字段类型,它提供了比日期和时间(DATE, DATETIME)...

Global site tag (gtag.js) - Google Analytics