日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

生成本月日历

發布時間:2024/4/14 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 生成本月日历 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

如果對日期函數比較熟悉的話,要實現日歷的功能并不難。本文中主要用到的日期函數有:?

? DATEADD(datepart,number,date) --在日期中添加或減去指定的時間間隔

? DATEDIFF(datepart,startdate,enddate)--返回兩個日期之間的時間

? DATE(date) --返回日期的天數

? DATEPART(datepart,date) --返回日期/時間的單獨部分

? 另外,還用到了一個輔助表t100,t100里面的內容是1到100的自然數列。代碼很簡單,就不多解釋。直接上代碼!

?

/*找到月初、月末的日期*/ WITH x0AS ( SELECT CONVERT(DATE, DATEADD(d, -DAY(GETDATE()) + 1,GETDATE())) AS 月初 ,CONVERT(DATE, DATEADD(d, -DAY(GETDATE()),DATEADD(m, 1, GETDATE()))) AS 月末),/*生成第幾天*/x1AS ( SELECT 月初 ,月末 ,DATEDIFF(d, 月初, 月末) + 1 AS 第幾天FROM x0),/*遍歷本月的所有日期*/x2AS ( SELECT 日期 ,第幾天FROM ( SELECT DATEADD(d, id - 1, 月初) AS 日期 ,id AS 第幾天FROM t100LEFT JOIN x1 ON t100.id <= x1.第幾天) tWHERE 日期 IS NOT NULL),/*找到日期對應的所在周,周內某天*/x3AS ( SELECT DATEPART(DW, 日期) AS 周幾 ,( DATEPART(WK, 日期) - DATEPART(WK,DATEADD(D, -DAY(日期), 日期)) )+ 1 AS 第幾周 ,第幾天FROM x2)/*創建本月日歷*/SELECT MAX(CASE 周幾WHEN 1 THEN 第幾天END) 周日 ,MAX(CASE 周幾WHEN 2 THEN 第幾天END) 周一 ,MAX(CASE 周幾WHEN 3 THEN 第幾天END) 周二 ,MAX(CASE 周幾WHEN 4 THEN 第幾天END) 周三 ,MAX(CASE 周幾WHEN 5 THEN 第幾天END) 周四 ,MAX(CASE 周幾WHEN 6 THEN 第幾天END) 周五 ,MAX(CASE 周幾WHEN 7 THEN 第幾天END) 周六FROM x3GROUP BY 第幾周ORDER BY 第幾周

? 下圖是2015年5月的日歷

?

? 如果有更好的,更簡單的實現方式,歡迎提出,一起交流

?

轉載于:https://www.cnblogs.com/accumulater/p/6808206.html

總結

以上是生活随笔為你收集整理的生成本月日历的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。