SqlServer获取输入日期范围内每个月的第一天的日期

创建自定义函数

示例👇

在这里插入图片描述

直接上代码

复制粘贴就可以了,注意更改引用的数据库名称

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;


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

com-ljf

创作不易,多多鼓励^^

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值