【问题标题】:Get last day of any month for any year获取任何一年的任何一个月的最后一天
【发布时间】:2021-08-25 08:45:11
【问题描述】:
declare @comonth int ='10'
declare @coyear int ='2018'

SELECT EOMONTH(@CoYear, @comonth)

我已将 @coyear 设置为 2018 并将 @comonth 设置为 10。我希望结果为 2018-10-31。 (当月的最后一天)。我必须使用什么语句?

【问题讨论】:

  • 如果您查看EOMONTH 的文档,您会看到预期的第一个参数是日期和时间数据类型。第二个是可选的,它会在日期上添加那么多个月。

标签: sql sql-server tsql


【解决方案1】:

这与您的 last question 的原理相同,以及为什么我建议您阅读有关 DATEFROMPARTSEOMONTH 的文档,因为它解释了如何使用这两个功能:

DECLARE @comonth int = 10; --Don't wrap numerical values in single quotes(')
DECLARE @coyear int = 2018; --Don't wrap numerical values in single quotes(')

SELECT EOMONTH(DATEFROMPARTS(@coyear,@comonth,1)); --All months's have a day 1

【讨论】:

    【解决方案2】:

    适用于所有版本。试试这个:

    DECLARE @Year   int         = 2030
        ,   @Month  int         = 10
    ;   
    DECLARE @Date   datetime    = CONVERT(datetime, LTRIM(@Year*10000+@Month*100+1))
    ;
    SELECT DATEADD(mm, 0, DATEADD(mm, DATEDIFF(mm, 0, @Date) + 1, 0))-1
    

    【讨论】:

      猜你喜欢
      • 2015-02-06
      • 2011-04-24
      • 1970-01-01
      • 1970-01-01
      • 2013-09-04
      • 1970-01-01
      • 2016-06-17
      • 1970-01-01
      相关资源
      最近更新 更多