ВЫБРАТЬ ИЗ ТАБЛИЦЫ на ГОД динамически - PullRequest
1 голос
/ 10 марта 2020

У меня есть запрос (в Oracle SQL Developer), который в настоящее время жестко запрограммирован для выбора всех записей в 2019, 2018 и 2017 годах. Теперь, когда наступил 2020 год, я хотел бы изменить его, чтобы выбрать идущий динамически прошло три года, так что этот запрос может работать годами без необходимости изменения кода.

Я знаю, что могу найти все записи с этой конкретной даты c в прошлом году и до конца года с -

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

Так что это даст мне 11 марта С 2019 по конец 2019 года. Но как выбрать все записи для текущего года, прошлого года и двух лет a go (каждый год отдельно) - а не специально для этой даты? BOOKDATE имеет формат DD-MON-YY.

Ответы [ 2 ]

1 голос
/ 10 марта 2020

Вы можете извлечь год и выполнить расчет по нему:

SELECT *
FROM   mytable
WHERE  EXTRACT(YEAR FROM bookdate) - EXTRACT(YEAR FROM SYSDATE) <= 3
0 голосов
/ 10 марта 2020

Вы можете попробовать вот так:

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