SELECT 从 TABLE 到 YEAR 动态

SELECT FROM TABLE by YEAR dynamically

我有一个查询(在 Oracle SQL Developer 中),目前硬编码为 select 2019 年、2018 年和 2017 年的所有记录。现在是 2020 年,我想将其更改为 select 动态返回三年,以便此查询可以在几年后工作而无需更改代码。

我知道我可以找到从去年这个特定日期到年底的所有记录 -

SELECT * FROM TABLE
WHERE BOOKDATE >= add_months( sysdate, -12*1 );

所以这会给我从 2019 年 3 月 11 日到 2019 年底的时间。但是我如何 select 当前年份、去年和两年前(每年分别)的所有记录- 不是特别从这个日期开始? BOOKDATE 的格式为 DD-MON-YY。

你可以这样试试:

SELECT * 
    FROM TABLE 
    WHERE EXTRACT(YEAR from BOOKDATE) >= EXTRACT(YEAR from sysdate)-3

您可以 extract 年份并对其进行计算:

SELECT *
FROM   mytable
WHERE  EXTRACT(YEAR FROM bookdate) - EXTRACT(YEAR FROM SYSDATE) <= 3