1.节假日表
CREATE TABLE [DicDate] (
[ID] [int] IDENTITY (1, 1) NOT NULL ,
[DateStr] [varchar10] NULL ,
[WorkFlag] [Flag] NOT NULL CONSTRAINT [DF_DicDate_WorkFlag] DEFAULT ('1101'),
CONSTRAINT [PK_DicDate] PRIMARY KEY CLUSTERED
(
[ID]
) ON [PRIMARY]
) ON [PRIMARY]
GO
注释:ID,为主键自动增长,DataStr为日期,例如'2009-10-01',WorkFlag为是否是工作日如果是“是”为“1101”,如果是否为"1100"
2.计算函数
createFUNCTION dbo.f_WorkDay(
@dt_begin datetime, --计算的开始日期
@dt_end datetime --计算的结束日期
)RETURNS int
AS
BEGIN
--IF @dt_begin>@dt_end
RETURN(DATEDIFF(Day,@dt_begin,@dt_end)
+1-(
SELECT COUNT(*) FROM DicDate
WHERE WorkFlag='1100' and DateStr BETWEEN @dt_begin AND @dt_end))
//该计算表示:首先算出两个日期之间的差,然后去统计节假日表里面“非工作日”一共的天数,然后再相减,得到的就是两个日期间除去指定工作日之间的天数
END
GO