Oracle 添加年份并移动到最后一天

Oracle 添加年份并移动到最后一天,oracle,oracle10g,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-5

某些事件需要在年底前发生,而这一年距离上一次事件已经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
例如:


到目前为止我的工作还不错,但是。。。我是否缺少一些可以使查询更具可读性的函数?

您可以使用trunc以便

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

(1/1440)比11年缩短了一秒,给你23:59:59

是的,对不起,1440是分钟,86400是秒
SELECT add_months(trunc(sysdate, 'YYYY'), 12*11) - (1/86400) from dual