取得某月的天數 SQL Function
以下分享2個SQL Server的Function
以下是加上一個月再去減一天然後取出來!
/****************************************************************************************
'程式代號: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月再額外處理
/****************************************************************************************
'程式代號: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
Hi,
亂馬客Blog已移到了 「亂馬客 : Re:從零開始的軟體開發生活」
請大家繼續支持 ^_^