要用to_date语句
例如
SELECT to_date('18-JUN-99','dd-mm-yy') FROM dual其中:
TO_DATE(dateStr, 'DD-MM-YY')
是按照指定格式,将字符串dateStr转换为DATE类型的值
不过,得到的日期是
2099/06/18
哈哈
于是,你就得设定一个分界点,例如取80为界,
即:假定'18-JUN-80'被认为是1980年,'18-JUN-79'被认为是2079年
那么,语句这样写:
SELECT 
    CASE 
        WHEN ( TO_NUMBER( SUBSTR('18-JUN-99', 8, 2)) > 79) 
            THEN ADD_MONTHS( TO_DATE('18-JUN-99','dd-mm-yy'), -1200)
        ELSE TO_DATE('18-JUN-99','dd-mm-yy') 
    END
FROM DUAL;
其中:ADD_MONTHS(dateVal -1200)是在时间值dateVal上减去100年得到的就是正确的时间
1999/06/18

解决方案 »

  1.   

    如果数据库表中直接修改。可填入1999-1-18
    要符合yyyy-mm-dd hh:mi:ss规则
      

  2.   

    to_date(str,'yyyy-mm-dd')
    其中yyyy是四位数字的年,mm是两位数字的月份(01-12)dd 两位数字的天(01-31)
    你的格式字符串不对啊
      

  3.   

    SQL> select to_char(sysdate,'yyyy-MON-dd','nls_date_language=spanish') from dual;TO_CHAR(SYSDATE,'YYYY-MON-DD',
    ------------------------------
    2004-ABR-20