您的位置:首页 > 其它

【叶子函数分享四十八】根据年得到所有星期日的日期

2014-11-13 10:31 260 查看
go
--创建函数
create function GetWeekDays(@year int)
returns @t table (星期天varchar(20))
as
begin
    insert @t
    select  substring(convert(varchar,dateadd(day,x,col),120),1,10) from
    ( select cast(cast(@year as varchar(4))+'-1-1' as datetime) as col )a cross join
    ( select  top 365 b8.i+b7.i + b6.i + b5.i + b4.i +b3.i +b2.i + b1.i + b0.i
x
    from(select 0 i union all select 1) b0
    cross join(select 0 i union all select 2) b1
    cross join(select 0 i union all select 4) b2
    cross join(select 0 i union all select 8) b3
    cross join(select 0 i union all select 16) b4
    cross join(select 0 i union all select 32) b5
    cross join(select 0 i union all select 64) b6
    cross join(select 0 i union all select 128) b7
    cross join(select 0 i union all select 256) b8
    order by 1 )b where datepart(dw,dateadd(day,x,col))=1
    return
end
 
--测试示例
select * from dbo.GetWeekDays(2011)
 
--运行结果
/*
星期天
--------------------
2011-01-02
2011-01-09
2011-01-16
2011-01-23
2011-01-30
2011-02-06
2011-02-13
2011-02-20
2011-02-27
2011-03-06
2011-03-13
2011-03-20
2011-03-27
2011-04-03
2011-04-10
2011-04-17
2011-04-24
2011-05-01
2011-05-08
2011-05-15
2011-05-22
2011-05-29
2011-06-05
2011-06-12
2011-06-19
2011-06-26
2011-07-03
2011-07-10
2011-07-17
2011-07-24
2011-07-31
2011-08-07
2011-08-14
2011-08-21
2011-08-28
2011-09-04
2011-09-11
2011-09-18
2011-09-25
2011-10-02
2011-10-09
2011-10-16
2011-10-23
2011-10-30
2011-11-06
2011-11-13
2011-11-20
2011-11-27
2011-12-04
2011-12-11
2011-12-18
2011-12-25
 
(52 row(s) affected)
*/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: