1 USE [自己的数据库名]
2 GO
3 /****** Object: UserDefinedFunction [dbo].[GetDateRangeFirst] Script Date: 2020/12/9 13:08:14 ******/
4 SET ANSI_NULLS ON
5 GO
6 SET QUOTED_IDENTIFIER ON
7 GO
8 /*=========================================================
9 创建人:LJF
10 描 述:获取输入日期范围内每个月的第一天的日期。
11 测 试:SELECT * FROM [dbo].[GetDateRangeFirst]('2019-11-01','2020-02-01')
12 =========================================================*/
13 CREATE FUNCTION [dbo].[GetDateRangeFirst]
14 (
15 @BeginDate DATETIME,
16 @EndDate DATETIME
17 )
18 RETURNS @array TABLE
19 (
20 DateItem DATE
21 )
22 AS
23 BEGIN
24 DECLARE @byy VARCHAR(10);
25 DECLARE @bm VARCHAR(10);
26 DECLARE @bt1 VARCHAR(50);
27 SET @byy = LTRIM(STR(YEAR(@BeginDate)));
28 SET @bm = RIGHT(STR(MONTH(@BeginDate) + 100), 2);
29 SET @bt1 = @byy + '-' + @bm + '-1 0:00:00';
30
31 WHILE @bt1 <= @EndDate
32 BEGIN
33 IF @bm = 12
34 BEGIN
35 SET @byy = @byy + 1;
36 SET @bm = 0;
37 END;
38 INSERT @array
39 (
40 DateItem
41 )
42 VALUES
43 (
44 CONVERT(DATE, @bt1)
45 );
46 SET @bm = @bm + 1;
47 SET @bt1 = @byy + '-' + @bm + '-1 0:00:00';
48 END;
49 RETURN;
50 END;