• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

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

sqlserver 搞代码 3年前 (2018-06-16) 136次浏览 已收录 0个评论

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

举例说明:  希望求出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=’星期一’

http://www.gaodaima.com/35701.htmlSQL Server 某些条件下求某日的日期_sqlserver

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 @[email protected][email protected] –得到该月的要求得的那天所在的周数与该年的第一周第一天的周数差

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)

欢迎大家阅读《SQL Server 某些条件下求某日的日期_sqlserver,跪求各位点评,若觉得好的话请收藏本文,by 搞代码


喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址