Not sure if you're just trying to get the beginning and end of a month or the day that the month begins and ends on.
CREATE FUNCTION [dbo].[dbFunc_GetFirstDayOfMonth]
( @pInputDate DATETIME )
RETURNS DATETIME
BEGIN
RETURN CAST(CAST(YEAR(@pInputDate) AS VARCHAR(4)) + '/' +
CAST(MONTH(@pInputDate) AS VARCHAR(2)) + '/01' AS DATETIME)
END
CREATE FUNCTION [dbo].[dbFunc_GetLastDayOfMonth]
(@LoadID AS Int)
RETURNS DATETIME
BEGIN
DECLARE @Year AS INT
DECLARE @Month AS INT
DECLARE @LastDay AS INT
SET @Year = LEFT(@LoadID, 4)
SET @Month = RIGHT(@LoadID, 2)
SET @LastDay = CASE @Month
WHEN 1 THEN 31
WHEN 2 THEN CASE WHEN @Year % 4 = 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 CAST
(CASE WHEN LEN(@Month) = 1
THEN '0' + CAST(@Month AS CHAR(1)) ELSE
CAST(@Month AS CHAR(2)) END + '/' + CAST(@LastDay AS CHAR(2)) + '/' + CAST(@Year AS CHAR(4)) AS DATETIME)
END