獲取當月的天數列表


實現這個功能,先參考下面幾篇博文《T-SQL獲取二月份天數https://www.cnblogs.com/insus/archive/2011/04/22/2025019.html

如何獲取月份的天數https://www.cnblogs.com/insus/archive/2011/09/10/2173028.html

獲取指定日期所在月份的第一天https://www.cnblogs.com/insus/archive/2011/09/11/2173612.html


可以寫一個Table-valued Functions:

 

 

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].[tvf_DaysOfMonth]
(
    @InputDate DATETIME
)
RETURNS @dump TABLE
(
    [Date] DATETIME
)
AS
BEGIN    
   DECLARE @firstDayOfMonth DATETIME = DATEADD(MONTH,DATEDIFF(MONTH,0,@InputDate),0) --獲取所在月份第一天日期

    DECLARE @daysOfMonth INT =  DAY(DATEADD(DAY,-1, DATEADD(MONTH,1,@firstDayOfMonth)))  --獲取所在月份的天數

    INSERT INTO @dump ([Date]) VALUES(@firstDayOfMonth) --把第一天插入表中。

    DECLARE @d INT = 1
    WHILE @d < @daysOfMonth
    BEGIN
        INSERT INTO @dump ([Date]) VALUES(@firstDayOfMonth + @d)
        SET @d = @d + 1
    END
    RETURN
END
Source Code

 

例子說明:

 

如果想更多的寫法參考, Insus.NET更改了上面的自定義函數,先是獲取指定日期所在月份的第一天日期,然后獲取指定日期下一個月份的第一天日期。

 

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].[tvf_DaysOfMonth]
(
    @InputDate DATETIME
)
RETURNS @dump TABLE
(
    [Date] DATETIME
)
AS
BEGIN    
   DECLARE @firstDayOfMonth DATETIME = DATEADD(MONTH,DATEDIFF(MONTH,0,@InputDate),0) --獲取指定月份第一天日期
   DECLARE @firstDayOfNexMonth DATETIME = DATEADD(MONTH,1,@firstDayOfMonth) --獲取指定月份下一個月份的第一天日期

    DECLARE @dumpDate DATETIME = @firstDayOfMonth

    WHILE (@dumpDate < @firstDayOfNexMonth)
    BEGIN        
        INSERT INTO @dump ([Date]) VALUES(@dumpDate)        
        SET @dumpDate = @dumpDate + 1
    END    
    RETURN
END
Source Code

 

上面2個自定義函數均可以使用。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM