在MS SQL Server实现这个功能,方法很多。下面Insus.NET使用2个方法来获取。

第一种,首先参考此篇《获取某一日期所在月份的第一天日期或最后一天日期https://www.cnblogs.com/insus/p/10841647.html

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

接下来,就可以写成一个函数,日后在程序中,可以直接使用这个函数:

某一日期所在月份的天数,获取某一日期所在月份的第一天日期或最后一天日期 随笔 第1张

 

 

某一日期所在月份的天数,获取某一日期所在月份的第一天日期或最后一天日期 随笔 第2张
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

-- =============================================
-- Author:      Insus.NET
-- Create date: 2019-05-09
-- Update date: 2019-05-09
-- Description: 获取指定日期所属月份的天数
-- =============================================
CREATE FUNCTION [dbo].[svf_DaysOfMonth]
( 
    @InputDate DATETIME 
)
RETURNS INT
AS
BEGIN
    RETURN DATEDIFF(
    DAY,
    [dbo].[svf_FirstDayOfTheMonth](@InputDate),
    [dbo].[svf_LastDayOfTheMonth](@InputDate)
) + 1
END
GO
Source Code

 

获取月份的天数,还可以这样去实现,直接拿指定日期所在月份最后一天,就知道其月份的天数了:

某一日期所在月份的天数,获取某一日期所在月份的第一天日期或最后一天日期 随笔 第4张

 

某一日期所在月份的天数,获取某一日期所在月份的第一天日期或最后一天日期 随笔 第5张
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

-- =============================================
-- Author:      Insus.NET
-- Create date: 2019-05-09
-- Update date: 2019-05-09
-- Description: 获取指定日期所属月份的天数
-- =============================================
CREATE FUNCTION [dbo].[svf_DaysOfMonth]
( 
    @InputDate DATETIME 
)
RETURNS INT
AS
BEGIN    
    RETURN DAY([dbo].[svf_LastDayOfTheMonth](@InputDate))
END
GO
Source Code

 

以这个函数,举列说明:

某一日期所在月份的天数,获取某一日期所在月份的第一天日期或最后一天日期 随笔 第7张

 

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄