还有其他更简单的方法将日期时间作为当年的一部分吗?如果没有,哪一个表现更好?
尝试#1:
CAST(DATEPART(MONTH, mydate) AS VARCHAR) + '/' +
CAST(DATEPART(DAY, mydate) AS VARCHAR) + '/' +
CAST(YEAR(GETDATE()) AS VARCHAR) AS DATETIME
尝试#2:
DATEADD(YEAR, DATEDIFF(YEAR, mydate, GETDATE()), mydate)
答案 0 :(得分:2)
答案 1 :(得分:2)
性能差异可以忽略不计,无论哪个更快。差异将在微秒范围内。
我通常会优先使用DATEADD + DATEDIFF。 VARCHAR版本的正确格式是使用ISO-8601格式YYYYMMDD,例如
CAST(STUFF(CONVERT(char(8),mydate,112),1,4,YEAR(GETDATE())) as DATETIME)
CONVERT(,,112)
=>的 YYYYMMDD 即可。 STUFF用当前年份替换前4个字符。 YEAR()返回一个数字,但在STUFF的上下文中会自动转换为varchar。