增加自增字段
alter table 表名 add 列名 int IDENTITY(1,1) NOT NULL
计算时间差
可以使用datediff函数计算两个时间之间的差值
DATEDIFF ( date-part, date-expression-1, date-expression-2 )
date-part:返回的时间差单位,有下列可选值
year | quarter | month | week | day | hour | minute | second | millisecond
date-expression-1:作为减数的时间
date-expression-2:作为被减数的时间
函数会以date-part为单位返回date-expression-2减去date-expression-1的时间差。
计算当前时间和’2018-08-10 10:31:01.000’的时间差,以分钟返回:
select DATEDIFF(MINUTE,'2018-08-10 10:31:01.000',GETDATE());
获取当前时间
GETDATE()
删除对象然后重新创建
--表
IF (EXISTS(SELECT * FROM sysobjects WHERE id=object_id(N'[dbo].[T_B_Class_Push]') AND OBJECTPROPERTY(id, N'IsTable') = 1))
DROP table T_B_Class_Push
go
--触发器
IF (EXISTS(SELECT * FROM sysobjects WHERE id=object_id(N'[dbo].[tg_dept_udpate]') AND OBJECTPROPERTY(id, N'IsTrigger') = 1))
DROP TRIGGER tg_dept_udpate
go
--存储过程
if exists (select * from dbo.sysobjects where (name = 'UP_Egs_InsertCardRec') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure UP_Egs_InsertCardRec
go
使用游标
declare @bcode varchar(50)
declare @code varchar(50)
-- 取出需要的数据放进临时表
select code into #tb_temp_dept from tb_temp_dept
-- 使用游标从临时表中获取数据
declare dept_cursor cursor for
(select code from #tb_temp_dept)
open dept_cursor -- 打开游标
fetch next from dept_cursor into @code -- 获取一条数据
while @@FETCH_STATUS = 0 -- FETCH_STATUS为0说明获取到了数据
begin
-- 业务操作
set @bcode = @code
PRINT '1:' + @bcode
declare @index int
set @index = LEN(@bcode)/4
while @index > 0
begin
set @code = stuff(@code,@index*4-3,1,'*')
set @index = @index -1
end
set @code = REPLACE(@code, '*', '')
PRINT '2:' + @code
update tb_temp_dept set code = @code where code = @bcode
fetch next from dept_cursor into @code -- 再次获取一条数据
end
close dept_cursor -- 关闭游标
deallocate dept_cursor -- 释放游标
drop table #tb_temp_dept -- 删除临时表
注意
- 这里之所以先将数据存放到了临时表,再使用游标获取,是因为sqlserver的游标在使用过程中如果原表数据发生了变化,它会再次获取到变化了的数据,不清楚这是bug还是有意为之,但是在使用中会影响我所需要的数据,所以一定要先存放至临时表
-- 取出需要的数据放进临时表
select code into #tb_temp_dept from tb_temp_dept
-- 使用游标从临时表中获取数据
declare dept_cursor cursor for (select code from #tb_temp_dept)