添加年份并移至最后一天

时间:2010-10-27 10:33:03

标签: oracle oracle10g

某事件需要在年度结束之前发生,这是自上一次事件发生以来的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

E.g:

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

到目前为止,我的工作正常但是...我错过了一些可以使查询更具可读性的函数吗?

1 个答案:

答案 0 :(得分:3)

您可以使用截断,以便获得

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

(1/1440)在11年中取消了第二次,给你23:59:59