求一个给定一个日期和完工期限的天数,推算出完工日期的函数,要求排除所有节假日。

mjpok 2011-07-19 06:43:09
求一个给定一个日期和完工期限的天数,推算出具体完工日期的函数,要求排除所有节假日。
设想:建立一个节假日表。记录所有重大的假期安排。及调修的具体日期。

2011年全年公休假放假安排_中国政府网
节日 放假时间 放假天数 调休上班日期
元旦 1月1日至3日放假 共3天 无调休
春节 2月2日至8日放假调休 共7天 1月30日、2月12日(星期日、六)
清明节 4月3日至5日放假调休 共3天 4月2日(星期六)
劳动节 4月30日至5月2日放假 共3天 无调休
端午节 6月4日至6日放假 共3天 无调休
中秋节 9月10日至12日放假 共3天 无调休
国庆节 10月1日至7日放假调休 共7天 10月8日、9日(星期六、日)

例子:录入的时间是2月1日8点,工单要求完工的时限为:2天,那么要求输入的完工具体时间为:2011-02-09,既有效工作日为1号和9号2天。

求一个能这样输出 具体完工时间的函数,谢谢!
...全文
185 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
cd731107 2011-07-19
  • 打赏
  • 举报
回复
create table tb(date datetime,id int)
insert tb
select '2011-01-01',1 union all
select '2011-01-02',1 union all
select '2011-01-03',1 union all
select '2011-02-02',1 union all
select '2011-02-03',1 union all
select '2011-02-04',1 union all
select '2011-02-05',1 union all
select '2011-02-06',1 union all
select '2011-02-07',1 union all
select '2011-02-08',1
--上面这个表用来添加所有放假日期 其他的自己再加
cd731107 2011-07-19
  • 打赏
  • 举报
回复

create table tb(date datetime,id int)
insert tb
select '2011-01-01',1 union all
select '2011-01-02',1 union all
select '2011-01-03',1 union all
select '2011-02-02',1 union all
select '2011-02-03',1 union all
select '2011-02-04',1 union all
select '2011-02-05',1 union all
select '2011-02-06',1 union all
select '2011-02-07',1 union all
select '2011-02-08',1
--其他的自己再加
drop function dbo.f_day

create function dbo.f_day(@date datetime,@days int) returns datetime
as
begin
declare @date1 datetime
select @date1=dateadd(dd,number,@date) from master..spt_values
where type='p' and dateadd(dd,number,@date) not in (select date from tb)
and @days=number+1-(select count(*) from tb where date between @date and dateadd(dd,number,@date))
return @date1
end


select dbo.f_day('2011-02-01',2)

/*

select dateadd(dd,number,'2011-02-01') from master..spt_values
where type='p' and dateadd(dd,number,'2011-02-01') not in (select date from tb)
and 2
*/
mjpok 2011-07-19
  • 打赏
  • 举报
回复
如果工单要求完工的时限为:5天,那么要求输出的完工具体时间为:2011-02-12,既有效工作日为1,9,10,11,12 5天。其中 2月12日星期六,但它是调休的,以有效工作日计算。

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧