SQL SERVER – UDF – User Defined Function – Get Number of Days in Month

Posted by Joggee | SQL Tips and Tricks | Monday 17 September 2007 11:13 am

User Defined Function returns the numbers of days in month.

It is very simple yet very powerful and full proof UDF.

CREATE FUNCTION [dbo].[udf_GetNumDaysInMonth] 

(

@myDateTime DATETIME 

) 

RETURNS INT 

AS BEGIN DECLARE @rtDate INT 

SET @rtDate = CASE WHEN MONTH(@myDateTime) IN (1, 3, 5, 7, 8, 10, 12) 
THEN 31 

WHEN MONTH(@myDateTime) IN (4, 6, 9, 11) 
THEN 30 

ELSE CASE WHEN (YEAR(@myDateTime) % 4 = 0 

AND YEAR(@myDateTime) % 100 != 0) OR (YEAR(@myDateTime) % 400 = 0) 
THEN 29 

ELSE 28 ENDEND  

RETURN @rtDate 

END GO

ResultSet:
NumDaysInMonth
———————–
30

Thanks to Pinal Dave

————————————————————————————————

There is another way to get the same result. 

CREATE FUNCTION [dbo].[udf_GetNumDaysInMonth]
(
@myDateTime
DATETIME
)
RETURNS INT
AS
BEGIN
DECLARE
@rtDate INT
SET
@rtDate = DATEPART(dd, DATEADD(ms,-3,DATEADD(mm, DATEDIFF(m,0,@myDateTime)+1, 0)))
RETURN @rtDate
END

GO

ResultSet:
NumDaysInMonth
———————–
30

No Comments »

No comments yet.

RSS feed for comments on this post. TrackBack URI

Leave a comment