如何 select 特定日期是否早于 X 年? - 急板 SQL

How to select whether or not a specific date is before X amount of years? - Presto SQL

我正在尝试 select 我的某一列中的日期值是否发生在特定年限之前。

我正在尝试的代码:

SELECT CASE
WHEN CAST(my_date AS DATE) + INTERVAL '10' YEAR < CURRENT_DATE THEN 'OVER 10 YEARS AGO'
ELSE NULL AS date_check

对于我使用的日期(例如 2019-09-30),我的预期输出应该是 NULL,因为它们落在过去 10 年内,但由于某种原因,我得到 OVER 10 YEARS AGO 一切。

当我使用 10 多年前的实际值进行测试时(例如 2010-07-17),我也得到了预期的 OVER 10 YEARS AGO

如何实现我想要做的事情?我的代码似乎有什么问题?

WITH cte (my_date) AS (
          SELECT current_date - INTERVAL '11' YEAR UNION
          SELECT '2010-07-17' UNION
          SELECT '2019-09-30'
     )
SELECT CASE
          WHEN CAST(my_date AS DATE) + INTERVAL '10' YEAR < CURRENT_DATE
          THEN 'OVER 10 YEARS AGO'
          ELSE NULL
        END AS date_check
 FROM cte
;

话虽如此,最好根据文字而不是您的列执行计算:

WITH cte (my_date) AS (
          SELECT current_date - INTERVAL '11' YEAR UNION
          SELECT '2010-07-17' UNION
          SELECT '2019-09-30'
     )
SELECT CASE
          WHEN CAST(my_date AS DATE) < CURRENT_DATE - INTERVAL '10' YEAR
          THEN 'OVER 10 YEARS AGO'
          ELSE NULL
        END AS date_check
 FROM cte
;

并且,如果可能,使用没有 CAST 的正确类型。

Full test case