Sql 获取任何年份任何月份的最后一天 declare@comonth int='10' 宣布@coyear int='2018' 选择EOMOUNT(@CoYear,@comonth)

Sql 获取任何年份任何月份的最后一天 declare@comonth int='10' 宣布@coyear int='2018' 选择EOMOUNT(@CoYear,@comonth),sql,sql-server,tsql,Sql,Sql Server,Tsql,我已将@coyear设置为2018年,将@comonth设置为10年。我想要2018年10月31日的结果。(该月的最后日期)。我必须使用什么语句?这与您的相同原则,以及为什么我建议您阅读上的文档,并解释如何使用这两个函数: DECLARE@comonth int=10--不要将数值用单引号(')括起来 宣布@coyear int=2018--不要将数值用单引号(')括起来 选择EOMONTH(DATEFROMPARTS(@coyear,@comonth,1))--每个月都有一天 适用于所有版本。

我已将
@coyear
设置为2018年,将
@comonth
设置为10年。我想要2018年10月31日的结果。(该月的最后日期)。我必须使用什么语句?

这与您的相同原则,以及为什么我建议您阅读上的文档,并解释如何使用这两个函数:

DECLARE@comonth int=10--不要将数值用单引号(')括起来
宣布@coyear int=2018--不要将数值用单引号(')括起来
选择EOMONTH(DATEFROMPARTS(@coyear,@comonth,1))--每个月都有一天

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

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

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