【问题标题】:SQL Query to find the last day of the month in 6 months timeSQL 查询查找 6 个月内该月的最后一天
【发布时间】:2015-09-18 12:23:02
【问题描述】:

我正在尝试编写一些 SQL 来给出 6 个月内该月的最后一天。

例如如果我的检查日期是 15-07-2015,我希望下一个检查日期是 31-01-2016

检查日期可以是任何一个月的任何一天

任何建议将不胜感激。

【问题讨论】:

  • 您应该更新问题并使用您正在使用的 SQL Server 的特定版本对其进行标记,因为 2012+ 版本具有执行此操作的功能,而在旧版本中,您必须使用 dateadd 进行一些算术运算/日期差异。

标签: sql-server tsql sql-server-2014


【解决方案1】:

如果我明白的话。就是这样

declare @d date = '2015-07-15'
    SELECT DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,@d)+7,0))

【讨论】:

    【解决方案2】:

    如果您使用的是 SQL Server 2012+,您可以使用 eomonth 函数获取一个月的最后一天:

    declare @d date = '2015-07-15'
    select eomonth(@d,6)
    

    结果:2016-01-31

    该函数接受一个日期和一个可选整数,该整数指定要添加到日期参数的月数。

    【讨论】:

      【解决方案3】:

      试试这个

      declare @FindLastDay datetime
      set @FindLastDay=CONVERT(varchar(10),DATEADD(M,6,'2015-07-15'),120)
       SELECT CAST(DATEADD(ms, -3, DATEADD(mm, DATEDIFF(m, 0, @FindLastDay) + 1, 0)) as DATE)
      

      输出:

      2016-01-31
      

      【讨论】:

        【解决方案4】:
        Select DateAdd(D, Day(DateAdd(Month, 7, '2015-07-15')) * -1, DateAdd(M, 7, '2015-07-15'))
        

        得到您期望的答案。

        【讨论】:

          猜你喜欢
          • 2013-05-14
          • 1970-01-01
          • 2013-07-07
          • 1970-01-01
          • 1970-01-01
          • 2023-03-11
          • 2021-11-08
          • 1970-01-01
          相关资源
          最近更新 更多