动态日期案例陈述

Dynamic date case statement

我正在使用 SQL Management Studio 2012.I 有如下查询输出。我想要一个查看完成日期的专栏,如果它大于 2019-01-01,那么如果早于 'Renew',则考试是“有效的”。它不能是硬编码的 2019-01-01,在年末我希望它是 2020-01-01 等等。

Name         Exam         Date Completed  
Matt         English        2018-11-26       
James        Maths          2019-06-02      

我愿意

Name         Exam         Date Completed        Valid
Matt         English        2018-11-26            No
James        Maths          2019-06-02            Yes

我想你只是想知道年份是否与当前年份相同。那将是:

(case when year(date_completed) = year(getdate()) then 'Yes' else 'No'
 end) as valid

这也行,但我不知道它是否比上面的 case 语句更有效率:

    SELECT IIF(YEAR(date_completed) < YEAR(GETDATE()),'No','Yes') AS valid