SQL Server 某些条件下求某日的日期

牌九v

牌九v

2016-01-29 16:22

SQL Server 某些条件下求某日的日期,SQL Server 某些条件下求某日的日期
 

/*需要得结果: 某一天的日期
已知条件: 这天的年,月,星期几,在这个月中处于第几周

举例说明:  希望求出2004-11-22
已知条件: 2004年,  11 月,  星期一 ,这天在11月是第四周

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/sqlserver/)

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)

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/sqlserver/) 
展开更多 50%)
分享

猜你喜欢

SQL Server 某些条件下求某日的日期

SQLServer
SQL Server 某些条件下求某日的日期

极端条件下的曝光技巧

摄影 人像摄影 静物摄影
极端条件下的曝光技巧

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

什么条件下会下雪

生活常识
什么条件下会下雪

SQL Server日期计算

SQLServer
SQL Server日期计算

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

sql server日期时间函数

编程语言 网络编程
sql server日期时间函数

什么条件下更容易生女孩

生男生女
什么条件下更容易生女孩

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

榨干MS SQL Server 最后一滴血

榨干MS SQL Server 最后一滴血

网络端口及其详解分页(二)

网络端口及其详解分页(二)
下拉加载更多内容 ↓