使用 DATADD 和 CASE 语句查找并过滤到当年的员工周年纪念日

Find and filter to current year employees anniversary date using DATADD and CASE Statement

我正在尝试以 5 年、10 年、15 年等为增量查找员工周年纪念日期,我能够得到结果,但我正在尝试过滤创建的“Anniversary_Year 列在 case 语句中只显示当年的结果,不需要过去或未来的结果。

SELECT Employee,Hire_Date
CASE
    WHEN DATEADD(year, 5, Hire_Date) >= GETDATE()
    THEN DATEADD(year, 5, Hire_Date)
    ELSE NULL 
END  AS '5_Year_Anniversary',
CASE
    WHEN DATEADD(year, 10, Hire_Date) >= GETDATE()
    THEN DATEADD(year, 10, Hire_Date) 
    ELSE NULL 
END  AS '10_Year_Anniversary',
CASE
    WHEN DATEADD(year, 15, Hire_Date) >= GETDATE()
    THEN DATEADD(year, 15, Hire_Date)
    ELSE NULL 
END  AS '15_Year_Anniversary',
CASE
  WHEN DATEADD(year, 25, Hire_Date) >= GETDATE() 
  THEN DATEADD(year, 25, Hire_Date)
  ELSE NULL 
END  AS '25_Year_Anniversary'
FROM
MyTable
WHERE YEAR(Hire_Date) = YEAR(getdate())

使用 WHERE 子句仅 return 甚至 5 周年纪念行。

SELECT Employee, Hire_Date,
       cast(YEAR(getdate()) - YEAR(Hire_Date) as varchar(5)) + 'anniversary'
FROM MyTable
WHERE (YEAR(getdate()) - YEAR(Hire_Date)) % 5 = 0
  and YEAR(getdate()) > YEAR(Hire_Date)