zoukankan      html  css  js  c++  java
  • 获取当月的天数列表

    实现这个功能,先参考下面几篇博文《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个自定义函数均可以使用。

  • 相关阅读:
    HDU 1159 Common Subsequence 动态规划
    poj2349 Arctic Network
    hdu1596 find the safest road
    poj 1011
    二进制枚举
    codeforces 626E Simple Skewness
    code for 1
    painting fence
    codeforces 797c minimal string
    POJ 3977
  • 原文地址:https://www.cnblogs.com/insus/p/10837900.html
Copyright © 2011-2022 走看看