发生ORA-01830错误时?

时间:2016-01-11 15:45:54

标签: oracle

我需要解释以下问题: 我在表中插入了一些值,并在TIMESTAMP(6)列中插入了值 11-JAN-16 03.04.30.944265000抛出了标题中提到的错误。

对于某些其他值,它不会抛出任何错误,例如:

10-JAN-16 05.15.15.063826000
10-JAN-16 05.10.45.039946000
10-JAN-16 05.09.45.060794000

我知道我不应该依赖从varchar到时间戳的隐式转换,这就是我将使用转换的原因:

to_timestamp(column, 'DD-Mon-RR HH24.MI.SS.FF)

请让我知道为什么以及何时发生此错误。谢谢! 甲

2 个答案:

答案 0 :(得分:0)

我已根据您的要求创建了测试环境。看看下面:

     CREATE TABLE SCOTT.TEST
        (
          A  TIMESTAMP(6)
        );


    SQL> Insert into SCOTT.TEST (A)
     Values(TO_TIMESTAMP('01-10-16 05:15:15.063826000','fmMMfm-fmDDfm-YYYY fmHH12fm:MI:SS.FF AM'));  2  

    1 row created.

    SQL> Insert into SCOTT.TEST (A)
     Values(TO_TIMESTAMP('01-10-16 05.10.45.039946000','fmMMfm-fmDDfm-YYYY fmHH12fm:MI:SS.FF AM'));  2  

    1 row created.

    SQL> Insert into SCOTT.TEST (A)
     Values(TO_TIMESTAMP('01-10-16 05.09.45.060794000','fmMMfm-fmDDfm-YYYY fmHH12fm:MI:SS.FF AM'));  2  

    1 row created.

    SQL> COMMIT;

    Commit complete.

    SQL> select * from test;

    A
    ---------------------------------------------------------------------------
    10-JAN-16 05.15.15.063826 AM
    10-JAN-16 05.10.45.039946 AM
    10-JAN-16 05.09.45.060794 AM

- 使用其他格式掩码

SQL> Insert into SCOTT.TEST (A)
 Values(TO_TIMESTAMP('10-JAN-16 05.15.15.063826000','fmDDfm-fmMONfm-YYYY fmHH12fm:MI:SS.FF AM'));SQL>   2  

1 row created.

SQL> Insert into SCOTT.TEST (A)
 Values(TO_TIMESTAMP('10-JAN-16 05.10.45.039946000','fmDDfm-fmMONfm-YYYY fmHH12fm:MI:SS.FF AM'));  2  

1 row created.

SQL> Insert into SCOTT.TEST (A)
 Values(TO_TIMESTAMP('10-JAN-16 05.09.45.060794000','fmDDfm-fmMONfm-YYYY fmHH12fm:MI:SS.FF AM'));  2  

1 row created.

SQL> COMMIT;

Commit complete.

SQL> select * from test;

A
---------------------------------------------------------------------------
10-JAN-16 05.15.15.063826 AM
10-JAN-16 05.10.45.039946 AM
10-JAN-16 05.09.45.060794 AM
10-JAN-16 05.15.15.063826 AM
10-JAN-16 05.10.45.039946 AM
10-JAN-16 05.09.45.060794 AM

6 rows selected.

希望它会对你有所帮助。

答案 1 :(得分:-1)

原因

您尝试输入日期值,但输入的日期与日期格式不符。