【问题标题】:When ORA-01830 error occur?什么时候出现 ORA-01830 错误?
【发布时间】:2016-01-11 15:45:54
【问题描述】:

我需要对以下问题进行解释: 我在表中插入一些值,对于 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)

请告诉我此错误发生的原因和时间。谢谢! 一个

【问题讨论】:

  • 你使用TO_TIMESTAMP(column, 'DD-Mon-RR HH24.MI.SS.FF')的时候会报错吗?
  • 您是在插入该值时遇到错误(如果是,请显示您使用的确切命令),还是在查询时 - 如果后者在查询中使用 to_timestamp()?您显示的调用是针对column,如果那是已经一个不正确的时间戳。不过很难说清楚你在做什么。

标签: oracle


【解决方案1】:

我已经根据您的要求创建了一个测试环境。往下看:

     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.

希望对你有所帮助。

【讨论】:

    【解决方案2】:

    原因

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

    【讨论】:

    • 不,错误发生在添加 to_timestamp 转换之前,我想知道为什么其他一些记录在添加之前有效。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-21
    相关资源
    最近更新 更多