如何将固定月份和日期与 sql 年功能结合使用?
How can I combine fixed month and day with sql year function?
我想在T-SQL
中组成一个固定日期和月份的日期(总是一年的最后一天和最后一个月),年份必须是可变的。
- 这一天总是:
31
- 月份总是:
12
- 年份是可变的,比方说
2014
格式类似于 12-31-2014
或 12-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.
我想在T-SQL
中组成一个固定日期和月份的日期(总是一年的最后一天和最后一个月),年份必须是可变的。
- 这一天总是:
31
- 月份总是:
12
- 年份是可变的,比方说
2014
格式类似于 12-31-2014
或 12-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.