通過SQL語句產生日曆表格

來源:互聯網
上載者:User

你還在通過Asp.Net控制項或者伺服器端語句處理來產生日曆表格嗎?

或者你還在用客戶段javascript來產生日曆表格嗎?

那麼他們產生的表格是不是都是周日排在第一列?

請看我產生的:

9年2月份

 

9年6月份

 

9年7月份

 

只是通過一段簡單的SQL語句(預存程序),傳入時間,輸出以星期一打頭列的日曆表格。

換成這個角度來處理,大家還會不會在C#後台為算出第幾星期而傷腦筋?

O(∩_∩)O哈哈~

其實也沒有什麼,就是一段小小的預存程序,不就是T-SQL嘛,大牛就不要拍磚了。

不過對小蝦來講,確實是實用啊,貼首頁了,我臉皮厚,磚頭都拍不爛,不信你們試試~

 

 預存程序貼出如下:

 

Code
-- =============================================
-- Author:        chf
-- Create date: 2009-06-25
-- Description:    傳入時間,返回當前月份列表
-- =============================================
alter PROCEDURE GetMonthTable
(
    @Date datetime
)
AS
BEGIN
    DECLARE @Start DATETIME,@End DATETIME
    DECLARE @Index INT
    SET @Start = DATEADD(MONTH,DATEDIFF(MONTH,0,@Date),0)
    SET @End = DATEADD(MONTH,1,@Start)
    SET @Index = DATEDIFF(DAY,-1,@Start)%7 - 1;
    SET @Start = DATEADD(mm,DATEDIFF(mm,0,@Date),0) 
    SET    @End = DATEADD(mm,1,@Start) - 1
    SET    @Index= DATEDIFF(day,0,@Start)%7

    ;WITH temp(date,row,col) AS
    (
        SELECT date=1,row=@Index/7+1,col=@Index%7+1
        UNION ALL
        SELECT date=date+1,row=(@Index+date)/7+1,col=(@Index+date)%7+1
        FROM temp 
        WHERE date <= DATEDIFF(DAY,@Start,@End)
    )
    SELECT    ISNULL(CONVERT(CHAR(2),[1]),'') AS 一,
            ISNULL(CONVERT(CHAR(2),[2]),'') AS 二,
            ISNULL(CONVERT(CHAR(2),[3]),'') AS 三,
            ISNULL(CONVERT(CHAR(2),[4]),'') AS 四,
            ISNULL(CONVERT(CHAR(2),[5]),'') AS 五,
            ISNULL(CONVERT(CHAR(2),[6]),'') AS 六,
            ISNULL(CONVERT(CHAR(2),[7]),'') AS 日
    FROM temp
    PIVOT
    (    
        MAX(date) FOR col IN ([1],[2],[3],[4],[5],[6],[7])
    ) AS B
END
GO

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.