某些条件下求某日的日期

王朝other·作者佚名  2006-01-09
宽屏版  字体: |||超大  

/*需要得结果: 某一天的日期

已知条件: 这天的年,月,星期几,在这个月中处于第几周 举例说明: 希望求出2004-11-22

已知条件: 2004年, 11 月, 星期一 ,这天在11月是第四周 declare @year numeric(4),@month numeric(2),@weekday varchar(6),@week numeric(1)

set @year=2004

set @month=11

set @weekday='星期一'

set @week=4

*/ alter function RequestDate

(@year numeric(4),@month numeric(2),@weekday varchar(6),@week numeric(1))

returns datetime as

begin declare @date1 varchar(10) --得到该月的第一天的日期

declare @month1 varchar(2) if @month<10

set @month1='0'+ltrim(rtrim(str(@month)))

else

set @month1=ltrim(rtrim(str(@month))) set @date1=ltrim(rtrim(str(@year))) + '-' + @month1+ '-' + '01' declare @num1 numeric(3)

declare @num2 numeric(3)

declare @num3 numeric(3)

set @num1=datepart(ww,@date1) --得到该月的第一天在该年的周数

set @num1=@num1+@week-2 --得到该月的要求得的那天所在的周数与该年的第一周第一天的周数差 set @num2=datepart(dw,dateadd(ww,@num1,'2004-01-01')) --得到日期对应的星期代号 select @num3=case @weekday

when '星期日' then 1

when '星期一' then 2

when '星期二' then 3

when '星期三' then 4

when '星期四' then 5

when '星期五' then 6

when '星期六' then 7

end return dateadd(dd,@num3-datepart(dw,dateadd(ww,@num1,'2004-01-01')),dateadd(ww,@num1,'2004-01-01')) end -- select dbo.RequestDate(2004,11,'星期一',4)

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有