Technical Article

Get month days

,

SELECT dbo.fnGetMonthDays(CONVERT(DATE,'2014-02-01'))
--28
SELECT dbo.fnGetMonthDays(CONVERT(DATE,'2016-02-01'))
--29
--Gets number of days for a month. Leap years taken in consideration.
CREATE FUNCTION dbo.fnGetMonthDays(@myDate DATE) RETURNS INT
AS
BEGIN
DECLARE @isLeap INT = 0
IF (YEAR(@myDate) % 400 = 0 OR (YEAR(@myDate) % 4 = 0 AND YEAR(@myDate) % 100 !=0))
SET @isLeap=1
DECLARE @month INT = MONTH(@myDate)
DECLARE @days INT
SELECT @days =
CASE
WHEN @month=1 THEN 31
WHEN @month=2 THEN 28 + @isLeap
WHEN @month=3 THEN 31
WHEN @month=4 THEN 30
WHEN @month=5 THEN 31
WHEN @month=6 THEN 30
WHEN @month=7 THEN 31
WHEN @month=8 THEN 31
WHEN @month=9 THEN 30
WHEN @month=10 THEN 31
WHEN @month=11 THEN 30
WHEN @month=12 THEN 31
END 
RETURN @days
END

Rate

4 (5)

You rated this post out of 5. Change rating

Share

Share

Rate

4 (5)

You rated this post out of 5. Change rating