如何将固定月份和日期与 sql 年功能结合使用?

How can I combine fixed month and day with sql year function?

我想在T-SQL中组成一个固定日期和月份的日期(总是一年的最后一天和最后一个月),年份必须是可变的。

格式类似于 12-31-201412-31-2015

我想到了 YEAR 函数:

select '12'+YEAR(getdate())-1

但这会导致 2014+12=2026

如何使用 T-SQL 实现此目的?

SQL 服务器具有用于此目的的 DATEFROMPARTS 函数:

DECLARE @date datetime = DATEFROMPARTS( 2014, 12, 31 )

记录在此处:https://msdn.microsoft.com/en-us/library/hh213228.aspx

您 运行 遇到的问题是 YEAR() returns 一个数字,因此服务器正在添加而不是连接。所以,如果你想通过连接来完成它,你需要将该数字强制返回到 CHAR(),然后将整个连接的混乱重新转换为 DATE(假设你想要返回日期类型):

select CAST('12-31-'+CAST(YEAR(getdate())-1 AS CHAR(4)) as DATE)

据说@Dai 使用 select DATEFROMPARTS(YEAR(getdate())-1, 12, 31) 的答案看起来更容易一些,可能 CPU.