简易的日历表制作

分享一个简易日历制作。只需要用很简单的语句,就可以生成一个日历表。应用场景可以结合销售日历啊,或者考勤表什么的~还有会有好处

1 创建测试表

CREATE TABLE TestDate
(
    ID INT IDENTITY PRIMARY KEY,
    Date DATE,  --日期
    WeekDay NVARCHAR(50), --星期几
    IsWeekend BIT, --是否周末
    IsHoliday BIT DEFAULT 0, --是否假日
    IsDayOff AS  IsWeekend | IsHoliday, --是否休息日
    Remark NVARCHAR(200) --备注
)

 

2 生成今年2018年的日历表

;WITH CTE AS
(
    SELECT CONVERT(DATE,'2018-01-01') AS Date,
            CASE DATEPART(WEEKDAY,'2018-01-01') WHEN 1 THEN 1 WHEN 7 THEN 1 ELSE 0 END AS IsWeekend  
    UNION ALL
    SELECT DATEADD(dd,1,CTE.Date),
            CASE DATEPART(WEEKDAY,DATEADD(dd,1,CTE.Date)) WHEN 1 THEN 1 WHEN 7 THEN 1 ELSE 0 END AS IsWeekend
        FROM CTE          
    WHERE CTE.Date < '2018-12-31'
)
INSERT INTO dbo.TestDate
(
    Date,
    IsWeekend,
    WeekDay
)
SELECT CTE.Date,CTE.IsWeekend,FORMAT(CTE.Date,'dddd')
    FROM CTE
    OPTION (MAXRECURSION 0)

 

如果需要更新个假日,可以酱汁

UPDATE dbo.TestDate SET IsHoliday = 1,Remark = '元旦' WHERE FORMAT(Date,'MM-dd') = '01-01'   --当初始化不止一年的时候就可以这样玩了~

 

然后效果

ID          Date       WeekDay                                            IsWeekend IsHoliday IsDayOff Remark
----------- ---------- -------------------------------------------------- --------- --------- -------- -------------
1           2018-01-01 星期一                                                0         1         1        元旦
2           2018-01-02 星期二                                                0         0         0        NULL
3           2018-01-03 星期三                                                0         0         0        NULL
4           2018-01-04 星期四                                                0         0         0        NULL
5           2018-01-05 星期五                                                0         0         0        NULL
6           2018-01-06 星期六                                                1         0         1        NULL
7           2018-01-07 星期日                                                1         0         1        NULL
8           2018-01-08 星期一                                                0         0         0        NULL
9           2018-01-09 星期二                                                0         0         0        NULL
10          2018-01-10 星期三                                                0         0         0        NULL
11          2018-01-11 星期四                                                0         0         0        NULL
12          2018-01-12 星期五                                                0         0         0        NULL
13          2018-01-13 星期六                                                1         0         1        NULL
14          2018-01-14 星期日                                                1         0         1        NULL
15          2018-01-15 星期一                                                0         0         0        NULL
16          2018-01-16 星期二                                                0         0         0        NULL
17          2018-01-17 星期三                                                0         0         0        NULL
18          2018-01-18 星期四                                                0         0         0        NULL
19          2018-01-19 星期五                                                0         0         0        NULL
20          2018-01-20 星期六                                                1         0         1        NULL
21          2018-01-21 星期日                                                1         0         1        NULL
22          2018-01-22 星期一                                                0         0         0        NULL

如果要加什么辅助字段~那么按需添加就好了~

 

PS:主要是Format这个函数在某些特定的情况是非常好用哒~

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值