日期格式不正确
EXECUTE CHK_PACK.CHK_HIREDATE('01-JAN-47')EXECUTE CHK_PACK.CHK_HIREDATE(to_date('2047-01-01','yyyy-mm-dd'))

解决方案 »

  1.   

    如果过来的是这样的'01-JAN-47'日期,应该怎么做?
      

  2.   

    EXECUTE CHK_PACK.CHK_HIREDATE(to_date('01-JAN-47','yy-mon-dd'))
    这个不行你就比较麻烦了。
      

  3.   

    楼上的
    EXECUTE CHK_PACK.CHK_HIREDATE(to_date('01-JAN-47','yy-mon-dd'))to_date('01-JAN-47','yy-mon-dd')中的[47]是不对的。
    它必须小于当月的最后一天。
    例如:
    select to_date('01-JAN-31','yy-mon-dd') as a from dual;
    这样是可以的,否则ORA-01847
      

  4.   

    '01-JAN-47'的组成方式是[01]是年,[JAN]是月份,[47]是天数。
    例如:
    '01-Apr-21'
    '01-Mar-22'
    '01-Jun-23'
    select to_date('01-Jun-21','yy-mon-dd') as a from dual;
    的结果是:2001-06-21
    select to_date('02-Jun-21','yy-mon-dd') as a from dual;
    的结果是:2002-06-21
      

  5.   

    EXECUTE CHK_PACK.CHK_HIREDATE(to_date('01-JAN-16','yy-mon-dd'))
    这样执行也是不行
      

  6.   

    看反了,我一看01以为2001年呢,
    后边没看,你翻过来不就玩了?
    EXECUTE CHK_PACK.CHK_HIREDATE(to_date('01-JAN-16','dd-mon-yy'))
      

  7.   

    '01-JAN-47' 这是欧美的标准格式, 在中文windows中, 改成 '01-4月-47'
      

  8.   

    试下这样
    to_date('01-JUN-2006')不用fmt
      

  9.   

    如果错误是ora-1843无效的月份那就没办法了,
    中英转换的问题,你最好当作字符串传进去,
    在存储过程里转换。
      

  10.   

    FUNCTION PRINT_IT(V_DATE DATE) RETURN VARCHAR2
    IS
        V_RESULT VARCHAR2(20);
        BEGIN
        V_RESULT:=TO_CHAR(V_DATE,'yyyy-mm-dd');
        RETURN V_RESULT;  
    END PRINT_IT;VARIABLE DISPLAY_DATE VARCHAR2(20)
    EXECUTE :DISPLAY_DATE:=OVER_LOAD.PRINT_IT('08-MAR-01')
    PRINT DISPLAY_DATE这是一个新的问题,能输出,但是不能实现格式转换
      

  11.   

    用这个格式化你的系统时间格式,应该可以解决
    alter system nls_date_format='yyyy-mm-dd hh24:mi:ss'
      

  12.   

    呵呵上面写错误
    alter system set nls_date_format='yyyy-mm-dd hh24:mi:ss'