Get First date of month:
SELECT DATEFROMPARTS(YEAR(GETDATE()), MONTH(GETDATE()), 1) AS FirstDayOfCurrentMonth
Create function for that
IF NOT EXISTS (SELECT * FROM sys.objects WHERE type = 'FN' AND name = 'FN_GetFirstDateOfMonth')
BEGIN
EXEC('
CREATE FUNCTION dbo.FN_GetFirstDateOfMonth (@InputDate DATE)
RETURNS DATE
AS
BEGIN
DECLARE @FirstDateOfMonth DATE;
SET @FirstDateOfMonth = DATEADD(MONTH, DATEDIFF(MONTH, 0, @InputDate), 0);
-- SET @FirstDateOfMonth = DATEFROMPARTS(YEAR(GETDATE()), MONTH(GETDATE()), 1)
RETURN @FirstDateOfMonth;
END;');
END;
go
SELECT dbo.FN_GetFirstDateOfMonth(GETDATE()) AS FirstDateOfMonth;
SELECT DATEFROMPARTS(YEAR(GETDATE()), MONTH(GETDATE()), 1) AS FirstDayOfCurrentMonth