这种问题在我这边不能重现,我的显示没有问题
SQL> SELECT TO_CHAR(SYSDATE-40*365,'DD-MM-RRRR') FROM DUAL;TO_CHAR(SY
----------
08-04-1964SQL> SELECT TO_CHAR(SYSDATE-40*365,'DD-MM-RR') FROM DUAL;TO_CHAR(
--------
08-04-64SQL> SELECT TO_CHAR(SYSDATE-40*365,'DD-MM-YYYY') FROM DUAL;TO_CHAR(SY
----------
08-04-1964

解决方案 »

  1.   

    用'DD-MM-YYYY' 格式 看看如何?
      

  2.   

    SQL> select to_char(to_date('1987-10-10','yyyy-mm-dd'),'rrrr-mm-dd') from dual;TO_CHAR(TO_DATE('1987-10-10','
    ------------------------------
    1987-10-10rr --其它世纪中年份的最后两位数字
      

  3.   

    我用了'DD-MM-YYYY' 格式 ,还是不行,是不是要在Oracle中更改什么设置啊?
    (操作系统Windows2000 server,Oracle9i Relase 2)
    SQL> select to_char(hire_date,'DD-MM-YYYY') "Hire Date" from employees;Hire Date
    ----------
    17-06-2087
    21-09-2089
    13-01-2093
    03-01-2090
    21-05-2091
    07-02-2099
      

  4.   

    如果当时录入时使用yymmdd那得到的就是2087!!不管你查询时使用的是rrmmdd还是yymmdd!!当然都会显示2087!!
      

  5.   

    检查控制面板中的时间设置,改成'yyyy-mm-dd'
      

  6.   

    写个语句更新,可以这样
    update employees set hire_date=add_months(hire_date,-1200) where hire_date>sysdate;
    不过,如果有2月最后一天且更改前后有闰年变化时,日期会变一天。