首页  ·  知识 ·  数据库
工作日处理函数(标准节假日)
佚名  本站原创  MS-SQL  编辑:dezai  图片来源:网络
"COLOR: #0000ff">if "COLOR: #000000"> "COLOR: #808080">exists "COLOR: #000000"> (<
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
   
IF @dt_begin>@dt_end
       
SELECT @bz=1,@dt=@dt_begin,@dt_begin=@dt_end,@dt_end=@dt
   
ELSE
       
SET @bz=0
   
SELECT @i=DATEDIFF(Day,@dt_begin,@dt_end)+1,
       
@workday=@i/7*5,
       
@dt_begin=DATEADD(Day,@i/7*7,@dt_begin)
   
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
本文作者:佚名 来源:本站原创
CIO之家 www.ciozj.com 微信公众号:imciow
   
免责声明:本站转载此文章旨在分享信息,不代表对其内容的完全认同。文章来源已尽可能注明,若涉及版权问题,请及时与我们联系,我们将积极配合处理。同时,我们无法对文章内容的真实性、准确性及完整性进行完全保证,对于因文章内容而产生的任何后果,本账号不承担法律责任。转载仅出于传播目的,读者应自行对内容进行核实与判断。请谨慎参考文章信息,一切责任由读者自行承担。
延伸阅读