SQL:创建某一时间段内的周末日期表以及特殊处理日期表(2)
来源:未知 责任编辑:责任编辑 发表时间:2015-09-09 15:37 点击:次
set @n=@n+1
end
select * from #Corporate_Calendar
3、把日期表内的周末日期和工作日期分别标识出来
update #Corporate_Calendar
set holiday=1 where datename(dw,date) in ('Saturday','Sunday')
go
update #Corporate_Calendar
set workday=1 where holiday=0
go
4、分别标识出每周最后一天,每月最后一天以及其它特殊处理日标识。如此例,我们标识2012-03-11是某周最后一天。
update #Corporate_Calendar www.2cto.com
set EOWProcessdate =1 where date ='2012-03-11'
5、标识出特殊的节假日,如此处我们标识出圣诞节和复活节
update #Corporate_Calendar
set holiday=1 where date = '12/25/2012' -- Xmas day
go
update #Corporate_Calendar
set holiday=1 where date = '3/25/2012' -- Easter
go
6、如果我们把此临时表创建到数据库的正常数据表如
内,我们可以通过创建一个Function来使用此表,判断某一天是否在我们需要特殊关照的某类日期内。
create function dbo.udf_isProcessDate (@date datetime, @Type varchar(10))
returns bit
begin
declare @x bit
set @x=NULL
If @type='Holiday'
select @x = holiday from dbo.Corporate_Calendar
where convert(varchar(10),date,112) =convert(varchar(10),@date,112)
If @type='Workday'
select @x = WorkDay from dbo.Corporate_Calendar
where convert(varchar(10),date,112) =convert(varchar(10),@date,112)
If @type='EOM' www.2cto.com
select @x = EOMProcessdate from dbo.Corporate_Calendar
where convert(varchar(10),date,112) =convert(varchar(10),@date,112)
If @type='EOW'
select @x = EOWProcessdate from dbo.Corporate_Calendar
where convert(varchar(10),date,112) =convert(varchar(10),@date,112)
If @type='Special'
select @x = SpecialProcessdate from dbo.Corporate_Calendar
where convert(varchar(10),date,112) =convert(varchar(10),@date,112)
return @x
end
go
使用方法
--select dbo.udf_isProcessDate(getdate(),'WorkDay')
作者 万事大吉
相关新闻>>
最新推荐更多>>>
- 发表评论
-
- 最新评论 更多>>