2016-01-11 2 views
0

Мне нужно объяснение по следующей проблеме: Я вставляю некоторые значения в таблицу и для столбца TIMESTAMP(6) значение 11-JAN-16 03.04.30.944265000 выдает ошибку, упомянутую в заголовке.При возникновении ошибки ORA-01830?

Для некоторых других значений не бросать какие-либо ошибки, как, например:

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) 

Пожалуйста, дайте мне знать, почему и когда эта ошибка возникает. Спасибо!

+1

Получаете ошибку, когда используете 'TO_TIMESTAMP (столбец« DD-Mon-RR HH24.MI.SS.FF »)'? –

+0

Получаете ошибку, когда вы вставляете это значение (если да, пожалуйста, покажите точную команду, которую вы используете), или когда вы ее запросите - если вы используете 'to_timestamp()' в запросе? Вызовы, которые вы показываете, относятся к 'column', а если это * уже * некорректная метка времени. Трудно сказать, что вы делаете. –

ответ

-1

ПРИЧИНА

Вы попытались ввести значение даты, но Введенная дата не соответствует формату даты.

+0

Нет, произошла ошибка перед добавлением преобразования to_timestamp, и я хочу знать, почему некоторые другие записи работали до их добавления. Благодаря! –

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. 

Надеется, что это поможет.