示例👇
直接上代码
复制粘贴就可以了,注意更改引用的数据库名称
USE [数据库名称]
GO
/****** Object: UserDefinedFunction [dbo].[GetDateRangeFirst] Script Date: 2022/8/24 14:23:34 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*=========================================================
创建人:***
描 述:获取输入日期范围内每个月的第一天的日期。
测 试:SELECT * FROM [dbo].[GetDateRangeFirst]('2019-11-01','2020-02-01')
=========================================================*/
CREATE FUNCTION [dbo].[GetDateRangeFirst]
(
@BeginDate DATETIME,
@EndDate DATETIME
)
RETURNS @array TABLE
(
DateItem DATE
)
AS
BEGIN
DECLARE @byy VARCHAR(10);
DECLARE @bm VARCHAR(10);
DECLARE @bt1 VARCHAR(50);
SET @byy = LTRIM(STR(YEAR(@BeginDate)));
SET @bm = RIGHT(STR(MONTH(@BeginDate) + 100), 2);
SET @bt1 = @byy + '-' + @bm + '-1 0:00:00';
WHILE @bt1 <= @EndDate
BEGIN
IF @bm = 12
BEGIN
SET @byy = @byy + 1;
SET @bm = 0;
END;
INSERT @array
(
DateItem
)
VALUES
(
CONVERT(DATE, @bt1)
);
SET @bm = @bm + 1;
SET @bt1 = @byy + '-' + @bm + '-1 0:00:00';
END;
RETURN;
END;