Добавьте годы и перейдите к последнему дню - PullRequest
1 голос
/ 27 октября 2010

Определенное событие должно произойти до конца года, когда пройдет 10 лет с момента предыдущего события.Я выдаю запрос, подобный этому, чтобы вычислить крайний срок:

SELECT
    :previous_date AS previous_date,
    ADD_MONTHS(
        TO_DATE(
            EXTRACT(
                YEAR FROM TO_DATE(:previous_date, 'YYYY-MM-DD HH24-MI-SS')
            ) || '-12-31 23-59-59', 'YYYY-MM-DD HH24-MI-SS'
        ), 12*10
    ) AS deadline
FROM DUAL

Например:

PREVIOUS_DATE DEADLINE                  
------------- ------------------------- 
2008-07-15    31/12/2018 23:59:59   

Я до сих пор работает нормально, но ... Мне не хватает какой-то функции, которая может сделатьзапрос более читабелен?

1 Ответ

3 голосов
/ 27 октября 2010

Вы можете использовать усечение, чтобы получить

SELECT add_months(trunc(sysdate, 'YYYY'), 12*11) - (1/86400) from dual

(1/1440) отнимает секунду от 11 лет, чтобы дать вам 23: 59: 59

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...