在where子句

时间:2018-06-28 10:02:01

标签: oracle date sysdate

TRUNC(SYSDATE) >= TO_DATE(REPLY_DATE || (EXTRACT(YEAR FROM SYSDATE)+ADD_YEAR),'dd-mm-yyyy')

上面的脚本是我脚本中的WHERE子句条件之一,在添加条件之后,整个脚本会抛出错误ORA-01840: input value not long enough for date format

我试图在选择查询中使用实际值执行,效果很好

SELECT TO_DATE('28-06' || (EXTRACT(YEAR FROM SYSDATE)+1),'dd-mm-yyyy') AS reply_date FROM DUAL;  

返回19年6月28日

列REPLY_DATE和ADD_YEAR分别是表中包含值28-061的列。

1 个答案:

答案 0 :(得分:2)

尝试这个

TRUNC(SYSDATE) >= ADD_MONTHS(TO_DATE(REPLY_DATE, 'DD-MM'), 12 * ADD_YEAR)

EXTRACT(YEAR FROM SYSDATE)是不需要的,因为当您在TO_DATE中未指定任何年份时,Oracle将采用当前年份。

如何确保始终必须应用本年度? -考虑除夕夜的时间。

相关问题