SQL根据年月生成日历函数.docx

SQL根据年月生成日历函数.docx

ID:51694454

大小:35.77 KB

页数:3页

时间:2020-03-15

SQL根据年月生成日历函数.docx_第1页
SQL根据年月生成日历函数.docx_第2页
SQL根据年月生成日历函数.docx_第3页
资源描述:

《SQL根据年月生成日历函数.docx》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、go--创建函数(第一版)(作者:dobear_0922)create function fn_Calendar(@year int, @month int)returns nvarchar(max)asbegin    declare @result nvarchar(max), @Enter nvarchar(8)    select @Enter = char(13)+char(10),  @result = 'SunMonTueWedThuFriSat' + @Enter --表头     declar

2、e @start datetime, @end datetime    select @start = rtrim(@year)+'-'+rtrim(@month)+'-1', @end = dateadd(mm, 1, @start)        set @result = @result+replicate('    ', (datepart(dw, @start)+@@datefirst+6)%7)    --第一行前面的空格    while datediff(d, @start, @end)>0  

3、  begin        if (datepart(dw, @start)+@@datefirst)%7 = 1            select @result = @result+@Enter --是否换行        select @result = @result+right('   '+rtrim(day(@start)), 4), @start = dateadd(d, 1, @start)    end    return @resultend go--测试示例set datefirst 

4、3print dbo.fn_Calendar(2007, 12)select dbo.fn_Calendar(2007, 12)set datefirst 7 --运行结果/* SunMonTueWedThuFriSat                           1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25  26  27  28  29  30  31

5、*/ go--创建函数(第二版)(作者:libin_ftsafe)create function f_calendar(@year int,@month int)returns @t table(日varchar(4),一varchar(4),二varchar(4),三varchar(4),四varchar(4),五varchar(4),六varchar(4))asbegin    declare @a table(id int identity(0,1),date datetime)    insert in

6、to @a(date)    select top 31 rtrim(@year)+'-'+rtrim(@month)+'-1' from sysobjects    update @a set date=dateadd(dd,id,date)       insert into @t    select        max(case datepart(dw,date) when 7 then rtrim(day(date)) else '' end),        max(case datepart(dw

7、,date) when 1 then rtrim(day(date)) else '' end),        max(case datepart(dw,date) when 2 then rtrim(day(date)) else '' end),        max(case datepart(dw,date) when 3 then rtrim(day(date)) else '' end),        max(case datepart(dw,date) when 4 then rtrim(da

8、y(date)) else '' end),        max(case datepart(dw,date) when 5 then rtrim(day(date)) else '' end),        max(case datepart(dw,date) when 6 then rtrim(day(date)) else '' end)    from        @a 

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。