SQL查詢日曆

 這東西給本身留着用。數據庫

常常會用到一些查詢須要作全月統計,但有些時候的統計須要將未發生日期也顯示出來,所以會須要一個固定的日期表,(T6的自定義查詢估計也是須要的,至少之前是這樣)函數

下面寫兩種方法來獲取指定月份的日期表,第一種適用SQL 2000及以上版本的數據庫,第二種只適用SQL 2005及以上版本數據庫spa

 

函數一:io

--支持SQL 2000方法

CREATE FUNCTION dbo.GetCalendar(@Begin NVARCHAR(30))統計

RETURNS @rst TABLE(dDate SMALLDATETIME,iDx int IDENTITY(1,1) NOT NULL)數據

AS查詢

BEGINdb

    IF ISNULL(@Begin,'')='' RETURNco

    INSERT INTO @rst

    SELECT TOP (DATEDIFF(DAY,@Begin,DATEADD(MONTH,1,@Begin)-1)+1) @Begin

    FROM syscolumns

   

    UPDATE @rst SET dDate=dDate+iDx-1  

    RETURN

END

GO

 

使用方法:

SELECT * FROM dbo.GetCalendar('2015-6-1') 

 

 

函數二:

--須要ROW_NUMBER函數的支持,支持SQL 2005及以上版本數據庫

CREATE FUNCTION dbo.GetCalendar2005(@Begin NVARCHAR(30))

RETURNS @rst TABLE(dDate SMALLDATETIME)

AS

BEGIN

    INSERT INTO @rst

   SELECT TOP (DATEDIFF(DAY,@Begin,DATEADD(MONTH,1,@Begin)-1)+1) CAST(@Begin AS SMALLDATETIME)-1+ROW_NUMBER() OVER(ORDER BY ID)

    FROM

    syscolumns

    RETURN

END

GO

使用方法:

SELECT * FROM dbo. GetCalendar2005('2015-6-1')

相關文章
相關標籤/搜索