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
本文介绍了一个用于SQL数据库的节假日表结构及其使用方法,并提供了一种计算任意两日期间的工作日数量的方法。通过创建一个特定的节假日表来记录非工作日,并定义一个计算函数来计算指定日期范围内的工作日总数。
)...&spm=1001.2101.3001.5002&articleId=83530668&d=1&t=3&u=740ad079161846819dc1d242a625fc90)
496

被折叠的 条评论
为什么被折叠?



