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

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)

*/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值