SQL Server 计算两个日期相差的工作天数的语句
2022-11-12 09:54:52
内容摘要
这篇文章主要为大家详细介绍了SQL Server 计算两个日期相差的工作天数的语句,具有一定的参考价值,可以用来参考一下。
对此感兴趣的朋友,看看idc笔记做的技术笔记!
代码如下:
文章正文
这篇文章主要为大家详细介绍了SQL Server 计算两个日期相差的工作天数的语句,具有一定的参考价值,可以用来参考一下。
对此感兴趣的朋友,看看idc笔记做的技术笔记!
代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | <code> if exists (select * from dbo.sysobjects where id = object_id(N '[dbo].[f_WorkDay]' ) and xtype in (N 'FN' , N 'IF' , N 'TF' )) drop function [dbo].[f_WorkDay] GO --计算两个日期相差的工作天数 CREATE FUNCTION f_WorkDay( @dt_begin datetime, --计算的开始日期 @dt_end datetime --计算的结束日期 )RETURNS int AS BEGIN declare @i int select @i= abs (datediff(dd,@dt_begin,@dt_end)) declare @t table(dt datetime) if @dt_begin>@dt_end insert @t select dateadd(dd,number,@dt_end) from master..spt_values where number<=@i and type= 'P' else insert @t select dateadd(dd,number,@dt_begin) from master..spt_values where number<=@i and type= 'P' return (select count (*) from @t where (datepart(weekday,dt)+@@datefirst-1)%7 between 1 and 5) END GO select dbo.f_WorkDay( '2009-10-10' , '2009-10-1' ) /* ----------- 7 (1 個資料列受到影響) */ if exists (select * from dbo.sysobjects where id = object_id(N '[dbo].[f_WorkDay]' ) and xtype in (N 'FN' , N 'IF' , N 'TF' )) drop function [dbo].[f_WorkDay] GO --计算两个日期相差的工作天数 CREATE FUNCTION f_WorkDay( @dt_begin datetime, --计算的开始日期 @dt_end datetime --计算的结束日期 )RETURNS int AS BEGIN DECLARE @workday int,@i int,@bz bit,@dt datetime set @workday=0 IF @dt_begin>@dt_end SELECT @bz=1,@dt=@dt_begin,@dt_begin=@dt_end,@dt_end=@dt ELSE SET @bz=0 WHILE @dt_begin<=@dt_end BEGIN SELECT @workday=CASE WHEN (@@DATEFIRST+DATEPART(Weekday,@dt_begin)-1)%7 BETWEEN 1 AND 5 THEN @workday+1 ELSE @workday END , @dt_begin=@dt_begin+1 END RETURN(CASE WHEN @bz=1 THEN -@workday ELSE @workday END ) END GO select dbo.f_WorkDay( '2009-10-10' , '2009-10-1' ) /* ----------- -7 */ </code> |
注:关于SQL Server 计算两个日期相差的工作天数的语句的内容就先介绍到这里,更多相关文章的可以留意
代码注释