IF OBJECT_ID('dbo.GetDateDiff', 'FN') IS NOT NULL OR OBJECT_ID('dbo.GetDateDiff', 'TF') IS NOT NULL OR OBJECT_ID('dbo.GetDateDiff', 'IF') IS NOT NULL DROP FUNCTION dbo.GetDateDiff //判断此函数是否存在,若存在,删除,不存在,重建
GO
create function GetDateDiff(@start varchar(200),@end varchar(200),@t_start varchar(200),@t_end varchar(200))
returns @d table(time varchar(20)) //建立临时表,returns确定返回值类型
as //函数写在begin,end 中
begin
declare @result int,@Max varchar(200),@Min varchar(200) //定义变量
if(DATEDIFF(day,@start,@t_start)>0) //判断两个时间的大小
set @Max=@t_start
else
set @Max=@start
if(DATEDIFF(day,@end,@t_end)>0)
set @Min=@end
else
set @Min=@t_end
if(DATEDIFF(day,@t_start,@end) <0)
set @result=0
else if(@end is not null)
set @result=DATEDIFF(day,@Max,@Min) //返回两个时间的差值
else
set @result=DATEDIFF(day,@Max,@t_end)
insert into @d(time) values (@result) //结果插入表中
return
end
GO
COMMIT
GO
create function GetDateDiff(@start varchar(200),@end varchar(200),@t_start varchar(200),@t_end varchar(200))
returns @d table(time varchar(20)) //建立临时表,returns确定返回值类型
as //函数写在begin,end 中
begin
declare @result int,@Max varchar(200),@Min varchar(200) //定义变量
if(DATEDIFF(day,@start,@t_start)>0) //判断两个时间的大小
set @Max=@t_start
else
set @Max=@start
if(DATEDIFF(day,@end,@t_end)>0)
set @Min=@end
else
set @Min=@t_end
if(DATEDIFF(day,@t_start,@end) <0)
set @result=0
else if(@end is not null)
set @result=DATEDIFF(day,@Max,@Min) //返回两个时间的差值
else
set @result=DATEDIFF(day,@Max,@t_end)
insert into @d(time) values (@result) //结果插入表中
return
end
GO
COMMIT
GO
select * from gEtdatediff('2015-02-12',null,'2013-03-24','2015-05-24') //调用此函数