USE MASTER
GO
IF EXISTS(SELECT * FROM dbo.sysdatabases WHERE
name='my_test_database')
DROP DATABASE [my_test_database]
GO
CREATE DATABASE [my_test_database]
GO
USE [my_test_database]
GO
CREATE TABLE [my_table] ([my_id] VARCHAR(16))
GO
--存储过程开始
:
CREATE PROCEDURE get_new_id
@NEW_ID VARCHAR(16) OUTPUT
AS
BEGIN
DECLARE @DATE DATETIME
DECLARE @YYYY VARCHAR(4)
DECLARE @MM VARCHAR(2)
DECLARE @DD VARCHAR(2)
--保存取得的当前时间
:
SET @DATE = GETDATE()
SET @YYYY = DATEPART(yyyy, @DATE)
SET @MM = DATEPART(mm, @DATE)
SET @DD = DATEPART(dd, @DATE)
--位数不够的前面补0
SET @YYYY = REPLICATE('0', 4 - LEN(@YYYY)) + @YYYY
SET @MM = REPLICATE('0', 2 - LEN(@MM)) + @MM
SET @DD = REPLICATE('0', 2 - LEN(@DD)) + @DD
--取出表中当前日期的已有的最大ID
SET @NEW_ID = NULL
SELECT TOP 1 @NEW_ID = [my_id] FROM [my_table] WHERE [my_id] LIKE
@YYYY+@MM+@DD+'%' ORDER BY [my_id] DESC
--如果未取出来
IF @NEW_ID IS NULL
--说明还没有当前日期的编号,则直接从1开始编号
SET @NEW_ID = (@YYYY+@MM+@DD+'00000001')
--如果取出来了
:
ELSE
BEGIN
DECLARE @NUM VARCHAR(8)
--取出最大的编号加上1
:
SET @NUM = CONVERT(VARCHAR, (CONVERT(INT, RIGHT(@NEW_ID, 8)) + 1))
--因为经过类型转换,丢失了高位的0,需要补上
SET @NUM = REPLICATE('0', 8 - LEN(@NUM)) + @NUM
--最后返回日期加编号
:
SET @NEW_ID = @YYYY+@MM+@DD + @NUM
END
END
GO
--执行20次调用及插入数据测试
:
DECLARE @N INT
SET @N = 0
WHILE @N < 20
BEGIN
DECLARE @NEW_ID VARCHAR(16)
EXECUTE get_new_id @NEW_ID OUTPUT
INSERT INTO [my_table] ([my_id]) VALUES (@NEW_ID)
SET @N = @N + 1
END
SELECT * FROM [my_table]
GO
--输出结果
SQL Server自动生成日期加数字的序列号
时间: 2024-11-06 03:35:48
SQL Server自动生成日期加数字的序列号的相关文章
SQL Server自动生成日期加数字的序列号_MsSql
USE MASTER GO IF EXISTS(SELECT * FROM dbo.sysdatabases WHERE name='my_test_database') DROP DATABASE [my_test_database] GO CREATE DATABASE [my_test_database] GO USE [my_test_database] GO CREATE TABLE [my_table] ([my_id] VARCHAR(16)) GO --存储过程开始 : CREA
sql server自动生成批量执行SQL脚本的批处理
场景: DBA那边给我导出了所有的存储.函数等等对象的创建脚本,有上千个文件. 现在需要将这些对象创建脚本导入到另外一个库,如何解决呢? 手动一个个执行显然不太现实. 于是手动写了一个批处理,将所有的文件形成一个.SQL的脚本,最后以@生成的.SQL脚本方式导入到目标库中. OS环境:WINDOWS xp 脚本内容如下: @echo off if exist list.sql del list.sql /q :input cls set input=: set /p input= 请输入要进
sql server自动生成拼音首字母的函数_MsSql
建立一个查询,执行下面的语句生成函数fn_GetPy 复制代码 代码如下: --生成拼音首码 CREATE function fn_GetPy(@str nvarchar(4000)) returns nvarchar(4000) --WITH ENCRYPTION as begin declare @intLen int declare @strRet nvarchar(4000) declare @temp nvarchar(100) set @intLen = len(@str) set
sql server自动生成拼音首字母的函数
建立一个查询,执行下面的语句生成函数fn_GetPy 复制代码 代码如下: --生成拼音首码 CREATE function fn_GetPy(@str nvarchar(4000)) returns nvarchar(4000) --WITH ENCRYPTION as begin declare @intLen int declare @strRet nvarchar(4000) declare @temp nvarchar(100) set @intLen = len(@str) set
急需-如何自动生成字母加日期再加数字的序列号
问题描述 如何自动生成字母加日期再加数字的序列号 我是菜鸟,现在在做公司的工单管理系统,每下一个工单就要向工单表中插入工单编号,编号形式为TN+当前年月日+6为从1开始自动增长的数字,其中TN是固定的 例如,插入的第一个数是:TN20130811000001 请大家帮帮忙,求源码 急需,谢谢!!! 解决方案 字符串连接可以实现这个需求 解决方案二: 字符串就是了~~~~系统时间你可以取到,自增长的你也可以自己设定的(最好是用一个SQL的方法) 这样你字符串自己组合下就好了... 解决方案三: p
如何使excel自动生成日期
Excel自动生成日期我想在一列自动生成日期(不超过设定的某一天), 不要有规律的有什么办法么,先将这一列的单元格格式设置为"日期"格式,如果要将日期设定为2000-1-1到2100-1-1之间那么在这一列中输入以下公式: =INT(RAND()*(73051-36526)+36526) 要设置不同的时间段,只要将公式中的数值进行修改即可 想要的日期和数字的规律是什么啊, 从1900-1-1的那一天起为第1天,到2000-1-1的那一天就刚好是第36526天
hibernate-Hibernate 自动生成日期值
问题描述 Hibernate 自动生成日期值 <class name="com.traitswu.zone.entity.User" table="user"> <id name="id" type="int" column="id"> <generator class="native"/> </id> <property name=
Sql Server中的日期与时间函数
Sql Server中的日期与时间函数: 1. 当前系统日期.时间 select getdate() 2. dateadd 在向指定日期加上一段时间的基础上,返回新的 datetime 值: 例如:向日期加上2天 select dateadd(day,2,'2004-10-15') --返回:2004-10-17 00:00:00.000 3. datediff 返回跨两个指定日期的日期和时间边界数: select datediff(day,'2004-09-01'
关于SQL Server自动备份无法删除过期的备份文件奇怪现象
server|备份 关于SQL Server自动备份无法删除过期的备份文件 数据库服务器每天凌晨两点进行数据库备份,同时对5天前的数据库备份文件进行删除,不然的话就会把硬盘给撑爆的 windows的日志里给出信息:SQL Server Scheduled Job 'DB 维护计划"数据库维护计划1"的 DB 备份作业.' (0x2DA54A5BBEFC2B4A874428B91602C52A) - Status: 失败 - Invoked on: 2005-09-09 01:00:00