存储过程做的日历(原创)

----功能:日历

----时间:2005-4-28

----作者:Tracy.Chuang

Create Proc SP_Calendar

@Date SmallDateTime = NULL

As

Begin

Declare @Calendar Table

(Week TinyInt,

Sun Varchar(2),

Mon Varchar(2),

Tue Varchar(2),

Wed Varchar(2),

Thu Varchar(2),

Fri Varchar(2),

Sat Varchar(2))



Declare @StartDate SmallDateTime,@EndDate SmallDateTime

Set @StartDate =DateAdd(Month,DateDiff(Month,0,IsNull(@Date,GetDate())),0)

Set @EndDate =DateAdd(Month,DateDiff(Month,0,IsNull(@Date,GetDate())) + 1,0) - 1



While DateDiff(Day,@EndDate,@StartDate) <= 0

Begin

Insert Into @Calendar

Select  DatePart(Week,@StartDate) As Week,

(Case (DatePart(DW,@StartDate)+@@DateFirst)%7  When 1 Then Cast(Day(@StartDate) As Varchar(2)) Else '' End) As Sun,
(Case (DatePart(DW,@StartDate)+@@DateFirst)%7  When 2 Then Cast(Day(@StartDate) As Varchar(2)) Else '' End) As Mon,
(Case (DatePart(DW,@StartDate)+@@DateFirst)%7  When 3 Then Cast(Day(@StartDate) As Varchar(2)) Else '' End) As Tue,
(Case (DatePart(DW,@StartDate)+@@DateFirst)%7  When 4 Then Cast(Day(@StartDate) As Varchar(2)) Else '' End) As Wed,
(Case (DatePart(DW,@StartDate)+@@DateFirst)%7  When 5 Then Cast(Day(@StartDate) As Varchar(2)) Else '' End) As Thu,
(Case (DatePart(DW,@StartDate)+@@DateFirst)%7  When 6 Then Cast(Day(@StartDate) As Varchar(2)) Else '' End) As Fri,
(Case (DatePart(DW,@StartDate)+@@DateFirst)%7  When 0 Then Cast(Day(@StartDate) As Varchar(2)) Else '' End) As Sat

Set @StartDate = @StartDate + 1

End



Select Max(Sun) As Sun,Max(Mon) As Mon,Max(Tue) As Tue,Max(Wed) As Wed,Max(Thu) As Thu,Max(Fri) As Fri,Max(Sat) As Sat

 From @Calendar

Group By week

End

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值