以下分享2個SQL Server的Function

以下是加上一個月再去減一天然後取出來!

CREATE FUNCTION [dbo].[fnGetLastDayOfMonth]
/****************************************************************************************
'程式代號:fnGetLastDayOfMonth
'程式名稱:Get Last Day Of Month
'目  的:Get Last Day Of Month
'參數說明:@YM=西元年月(2010/01)
'傳回值 :INT:該年月的日數
'副作用 :無
'備 註 :所有參數皆必需傳入
'範 例 :SELECT dbo.fnGetLastDayOfMonth('2010/02')        回傳值:28
****************************************************************************************/
(@YM VARCHAR(12))
RETURNS INT
BEGIN
    DECLARE @YMDATE VARCHAR(12)
    SET @YMDATE = @YM + '/01'
    DECLARE @RETURN INT
    SET @RETURN = DATEPART(DAY, 
        DATEADD(DAY, -1, 
        DATEADD(MONTH, 1, CAST(@YMDATE AS DATETIME))))
    RETURN @RETURN
END

 

以下是直接判斷那一月,2月再額外處理

CREATE FUNCTION [dbo].[fnGetLastDayOfMonth2]
/****************************************************************************************
'程式代號:fnGetLastDayOfMonth2
'程式名稱:Get Last Day Of Month
'目  的:Get Last Day Of Month
'參數說明:@YM=西元年月(2010/01)
'傳回值 :INT:該年月的日數
'副作用 :無
'備 註 :所有參數皆必需傳入
'範 例 :SELECT dbo.fnGetLastDayOfMonth2('2010/02')        回傳值:28
****************************************************************************************/
(@YM VARCHAR(12))
RETURNS INT
BEGIN
    DECLARE @YMDATE DATETIME
    SET @YMDATE = CAST(@YM + '/01' AS DATETIME)
    DECLARE @RETURN INT
    SELECT  @RETURN = (CASE   MONTH(@YMDATE)
                WHEN 1 THEN 31
                WHEN 2 THEN (CASE YEAR(@YMDATE)%4 
                                    WHEN 0 THEN 29 ELSE 28 END)
                WHEN 3 THEN 31
                WHEN 4 THEN 30
                WHEN 5 THEN 31
                WHEN 6 THEN 30
                WHEN 7 THEN 31
                WHEN 8 THEN 31
                WHEN 9 THEN 30
                WHEN 10 THEN 31
                WHEN 11 THEN 30
                WHEN 12 THEN 31
        END)
    RETURN @RETURN
END


DotBlogs Tags: GetLastDayOfMonth

Feedback

  • Bibby 2010/1/8 下午 01:53 回覆

    # re: 取得某月的天數 SQL Function

    有另一種寫法好像比較簡單..
    http://bibby.be/2010/01/blog-post.html

  • 亂馬客 2010/1/8 下午 03:48 回覆

    # re: 取得某月的天數 SQL Function

    to Bibby :
    感謝您的分享! 除了用DatePart取出來,還可以用DateDiff去相減!

    謝謝哦! 又多了一種方式,真好玩!

  • Bibby 2010/1/8 下午 04:20 回覆

    # re: 取得某月的天數 SQL Function

    也謝謝你分享ㄟ..^^..

標題 *
名稱 *
Email (將不會被顯示)
Url
回應
登入後使用進階評論
Please add 3 and 4 and type the answer here: