国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

生成本月日歷

2024-07-21 02:46:59
字體:
來源:轉載
供稿:網友
生成本月日歷
數據庫環境:SQL SERVER2008R2

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

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

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

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

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

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

/*找到月初、月末的日期*/WITH    x0          AS ( SELECT   CONVERT(DATE, DATEADD(d, -DAY(GETDATE()) + 1,                                              GETDATE())) AS 月初 ,                        CONVERT(DATE, DATEADD(d, -DAY(GETDATE()),                                              DATEADD(m, 1, GETDATE()))) AS 月末             ),/*生成第幾天*/        x1          AS ( SELECT   月初 ,                        月末 ,                        DATEDIFF(d, 月初, 月末) + 1 AS 第幾天               FROM     x0             ),/*遍歷本月的所有日期*/        x2          AS ( SELECT   日期 ,                        第幾天               FROM     ( SELECT    DATEADD(d, id - 1, 月初) AS 日期 ,                                    id AS 第幾天                          FROM      t100                                    LEFT JOIN x1 ON t100.id <= x1.第幾天                        ) t               WHERE    日期 IS NOT NULL             ),/*找到日期對應的所在周,周內某天*/        x3          AS ( 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    x3    GROUP BY 第幾周    ORDER BY 第幾周

下圖是2015年5月的日歷

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


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 汝南县| 灵寿县| 桐城市| 察哈| 乐山市| 资中县| 岢岚县| 武平县| 巨野县| 金山区| 大冶市| 肃宁县| 马鞍山市| 乡城县| 布尔津县| 土默特左旗| 政和县| 襄樊市| 山东省| 平阴县| 温泉县| 双柏县| 广昌县| 邢台县| 阳春市| 延寿县| 东兰县| 扶沟县| 呼和浩特市| 洪泽县| 深圳市| 尼勒克县| 肇庆市| 若尔盖县| 大名县| 永平县| 文安县| 扶绥县| 鄂托克前旗| 九寨沟县| 临清市|