【问题标题】:How to get last date of particular month from the month ID and year in SQL? [duplicate]如何从 SQL 中的月份 ID 和年份获取特定月份的最后日期? [复制]
【发布时间】:2016-04-20 21:39:45
【问题描述】:

如何从 SQL 中的月份 ID 和年份获取特定月份的最后日期?

输入:

@MonthID INT = 2,
@Year    INT = 2015

所需输出:28/02/2015

【问题讨论】:

  • SQL Server 的哪个版本?从 SQL Server 2012 开始,有一个 EOMONTH 函数用于此目的
  • 是的,它的 SQL Server 2012 ..得到了答案..谢谢

标签: sql sql-server sql-server-2012


【解决方案1】:

在 SQL Server 2012+ 中很容易

要从年份和月份中提取日期,请使用 DATEFROMPARTS (Transact-SQL)

要查找一个月的最后一天,请使用 EOMONTH (Transact-SQL)

Declare @MonthID INT = 2,
        @Year    INT = 2015

SELECT Eomonth(Datefromparts(@Year, @MonthID, 1)) 

对于任何小于Sql server 2012的东西

SELECT Dateadd(dd, -1, Dateadd(mm, 1, Cast(Cast(@Year AS CHAR(4)) + '-' 
                       + Cast(@MonthID AS VARCHAR(2))+'-'+'1' AS DATE))) 

注意:如果变量是Varchar类型那么你可以把cast去掉为varchar

【讨论】:

    【解决方案2】:

    您可以通过以下方式找到该月的最后一天

    Declare @MonthID varchar(10) = '02', @Year varchar(10) = '2015'
    select dateadd(dd,-1,dateadd(MM,1,cast(@Year+'-'+@MonthID+'-1' as date)))
    

    【讨论】:

      【解决方案3】:

      我就是这样做的。

      DECLARE @MonthID INT = 3,
      @Year    INT = 2015
      
      DECLARE @InputDate DATE, @TempDate DATE, @OutputDate DATE
      
      SET @InputDate = CAST(CAST(@Year AS VARCHAR) + '-' + CAST(@MonthID AS varchar) + '-01' AS DATE)
      SET @TempDate = @InputDate
      
      WHILE (DATEPART(m, @InputDate) = DATEPART(m, @TempDate))
      BEGIN
          SET @OutputDate = @TempDate
          SET @TempDate = DATEADD(d,1,@TempDate)  
      END 
      
      SELECT @OutputDate
      

      【讨论】:

        猜你喜欢
        • 2017-01-19
        • 2021-12-16
        • 2014-06-26
        • 1970-01-01
        • 2012-02-16
        • 1970-01-01
        • 2014-11-21
        • 1970-01-01
        • 2013-02-15
        相关资源
        最近更新 更多