/*需要得結(jié)果: 某一天的日期
已知條件: 這天的年,月,星期幾,在這個(gè)月中處于第幾周
舉例說明:  希望求出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)  --得到該月的第一天在該年的周數(shù)
set @[email protected][email protected] --得到該月的要求得的那天所在的周數(shù)與該年的第一周第一天的周數(shù)差
set @num2=datepart(dw,dateadd(ww,@num1,'2004-01-01')) --得到日期對(duì)應(yīng)的星期代號(hào)
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)
新聞熱點(diǎn)
疑難解答
圖片精選