获取输入日期范围内每个月的第一天的日期(表值函数)

 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;

 

posted @ 2021-02-05 09:51  佑逆  阅读(251)  评论(0)    收藏  举报