Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Выдает ошибку ORA-01843: not a valid month / 25 сообщений из 55, страница 1 из 3
18.10.2018, 09:57
    #39719214
Goofy122
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выдает ошибку ORA-01843: not a valid month
Как найти в какой дате ошибка , варианты с импортом в excell и order by пожалуйста не пишите. Интересует конкретно выборка (select) неправильных дат.
...
Рейтинг: 0 / 0
18.10.2018, 10:10
    #39719227
MazoHist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выдает ошибку ORA-01843: not a valid month
Написать свою реализацию to_date c обработкой ошибок.
...
Рейтинг: 0 / 0
18.10.2018, 10:13
    #39719234
mibin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выдает ошибку ORA-01843: not a valid month
Goofy122,

Запустить цикл, и отловить ошибку скинул её в dbms_output или в временную таблицу, или сделать log errors.
...
Рейтинг: 0 / 0
18.10.2018, 10:28
    #39719242
ffzx1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выдает ошибку ORA-01843: not a valid month
...
Рейтинг: 0 / 0
18.10.2018, 10:31
    #39719247
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выдает ошибку ORA-01843: not a valid month
MazoHistНаписать свою реализацию to_date c обработкой ошибок.to_date умеет default on conversion error
...
Рейтинг: 0 / 0
18.10.2018, 10:40
    #39719256
alwan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выдает ошибку ORA-01843: not a valid month
-2-to_date умеет default on conversion error
Жаль только с 12.2
...
Рейтинг: 0 / 0
18.10.2018, 10:42
    #39719258
Goofy122
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выдает ошибку ORA-01843: not a valid month
mibinGoofy122,

Запустить цикл, и отловить ошибку скинул её в dbms_output или в временную таблицу, или сделать log errors.

при помощи DBMS_ERRLOG ?
...
Рейтинг: 0 / 0
18.10.2018, 10:46
    #39719259
mibin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выдает ошибку ORA-01843: not a valid month
...
Рейтинг: 0 / 0
18.10.2018, 14:19
    #39719394
Goofy122
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выдает ошибку ORA-01843: not a valid month
Создал таблицу person_date

Код: plsql
1.
2.
3.
4.
5.
CREATE TABLE person_date
(
 ID NUMBER(10)  PRIMARY KEY,
 BIRTHDATE VARCHAR2(500) 
);



Создал EXEC DBMS_ERRLOG.create_error_log ('person_date');


Затем выполнаю DML Insert

Код: plsql
1.
2.
3.
4.
5.
INSERT INTO TESTERSERSDWD SELECT P.ID ,  P.DATE FROM  PERSONS P  
WHERE  TO_DATE(P.DATE ,'DD/MM/YYYY')  BETWEEN  TO_DATE('01/01/2000', 'DD/MM/YYYY')  
AND   TO_DATE( '01/01/2018','DD/MM/YYYY') 

LOG ERRORS REJECT LIMIT UNLIMITED;



Соотевсно выводится ошибка
Код: plsql
1.
 ORA-01843: not a valid month 



Но логи ошибок не записывает в
Код: plsql
1.
 SELECT * FROM  ERR$_person_date; 



Что не так объясните пожалуйста ?
...
Рейтинг: 0 / 0
18.10.2018, 14:21
    #39719399
Goofy122
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выдает ошибку ORA-01843: not a valid month
Извиняюсь

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
CREATE TABLE person_date
(
 ID NUMBER(10)  PRIMARY KEY,
 DATE VARCHAR2(500) 
);


INSERT INTO person_date SELECT P.ID ,  P.DATE FROM  PERSONS P  
WHERE  TO_DATE(P.DATE ,'DD/MM/YYYY')  BETWEEN  TO_DATE('01/01/2000', 'DD/MM/YYYY')  
AND   TO_DATE( '01/01/2018','DD/MM/YYYY') 

LOG ERRORS REJECT LIMIT UNLIMITED;



вот так
...
Рейтинг: 0 / 0
18.10.2018, 14:43
    #39719408
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выдает ошибку ORA-01843: not a valid month
Goofy122вот так

Mедитируй на тему что происходить когда пишем TO_DATE(P.DATE ,'DD/MM/YYYY'). Кашу маслом испортишь если масло машинное .

SY.
...
Рейтинг: 0 / 0
18.10.2018, 14:45
    #39719409
Sheldon Cooper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выдает ошибку ORA-01843: not a valid month
Goofy122,

В каком формате у тебя лежит дата в поле PERSONS.DATE? В таком 'DD/MM/YYYY'?
В твоём примере "отлова" до вставки кривой даты дело не доходит, т. к сваливается в запросе на приведении PERSONS.DATE к типу date.
Код: plsql
1.
2.
3.
4.
5.
SQL> select to_date('01/00/2018','dd/mm/yyyy') from dual;
select to_date('01/00/2018','dd/mm/yyyy') from dual
ORA-01843: месяц неверен

SQL> 
...
Рейтинг: 0 / 0
18.10.2018, 14:50
    #39719413
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выдает ошибку ORA-01843: not a valid month
Sheldon Cooperдо вставки кривой даты дело не доходитда и если бы дошло...
...
Рейтинг: 0 / 0
18.10.2018, 14:58
    #39719416
Goofy122
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выдает ошибку ORA-01843: not a valid month
Sheldon CooperGoofy122,

В каком формате у тебя лежит дата в поле PERSONS.DATE? В таком 'DD/MM/YYYY'?
В твоём примере "отлова" до вставки кривой даты дело не доходит, т. к сваливается в запросе на приведении PERSONS.DATE к типу date.
Код: plsql
1.
2.
3.
4.
5.
SQL> select to_date('01/00/2018','dd/mm/yyyy') from dual;
select to_date('01/00/2018','dd/mm/yyyy') from dual
ORA-01843: месяц неверен

SQL> 




PERSONS.DATE в формате стринг вообще
Код: plsql
1.
 varchar2



даты прописаны так

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
21/10/1961
12/02/1963
31/03/1965
21/12/1966
05/03/1967
08/06/1967
07/07/1968
01/11/1968
26/12/1968
19/04/1969
15/06/1969
...
Рейтинг: 0 / 0
18.10.2018, 15:07
    #39719419
123йй
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выдает ошибку ORA-01843: not a valid month
Goofy122Создал таблицу person_date


CREATE TABLE person_date
(
ID NUMBER(10) PRIMARY KEY,
BIRTHDATE VARCHAR2(500)
);



Что не так объясните пожалуйста ?
ДНК ?
...
Рейтинг: 0 / 0
18.10.2018, 15:12
    #39719422
Goofy122
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выдает ошибку ORA-01843: not a valid month
123ййGoofy122Создал таблицу person_date


CREATE TABLE person_date
(
ID NUMBER(10) PRIMARY KEY,
BIRTHDATE VARCHAR2(500)
);



Что не так объясните пожалуйста ?
ДНК ?


Ты из тех гопн. которые заходят сюда чисто повыеб. , типо самый умный ?
...
Рейтинг: 0 / 0
18.10.2018, 15:18
    #39719424
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выдает ошибку ORA-01843: not a valid month
Goofy122типо самый умный ?Противопоставляешь себя умным? Не напрягайся, это и так очевидно.
...
Рейтинг: 0 / 0
18.10.2018, 15:29
    #39719432
123йй
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выдает ошибку ORA-01843: not a valid month
Goofy122, чисто-чисто повы.
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
Connected to Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 
SQL> create table bad_dates (dt_id number, dt varchar2(10));
Table created
SQL> insert into bad_dates (
  2     select 1, '2018/10/11' from dual union all
  3     select 2, '2018/99/05' from dual union all
  4     select 3, '2018/12/31' from dual union all
  5     select 4, '2018/12/99' from dual);
4 rows inserted
SQL>  create table test_dates (dt_id number, dt varchar2(500));
Table created
SQL>  exec dbms_errlog.create_error_log ('TEST_DATES');
PL/SQL procedure successfully completed
SQL>  insert into test_dates
  2     select dt_id, to_date(dt, 'YYYY/MM/DD') from bad_dates
  3     log errors into err$_test_dates reject LIMIT UNLIMITED;
2 rows inserted
SQL>  select * from test_dates;
     DT_ID DT
---------- --------------------------------------------------------------------------------
         1 11.10.18
         3 31.12.18
SQL>  select dt_id, dt, ora_err_mesg$ from err$_test_dates;
DT_ID                                                                            DT                                                                               ORA_ERR_MESG$
-------------------------------------------------------------------------------- -------------------------------------------------------------------------------- --------------------------------------------------------------------------------
2                                                                                2018/99/05                                                                       ORA-01843: not a valid month
4                                                                                2018/12/99                                                                       ORA-01847: day of month must be between 1 and last day of month

SQL> 
...
Рейтинг: 0 / 0
18.10.2018, 15:32
    #39719433
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выдает ошибку ORA-01843: not a valid month
Goofy122PERSONS.DATE в формате стринг вообще

Что есть левый дизайн и постоянно будет отстреливать яйца. И error logging тут не поможет так-как исключение просходит не при INSERT.

SY.
...
Рейтинг: 0 / 0
18.10.2018, 15:38
    #39719436
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выдает ошибку ORA-01843: not a valid month
Goofy122Ты из тех гопн. которые заходят сюда чисто повыеб. , типо самый умный ?Дебил, знай своё место.
...
Рейтинг: 0 / 0
18.10.2018, 15:38
    #39719439
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выдает ошибку ORA-01843: not a valid month
Исключение при INSERT прекрасно логируется:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
SQL> CREATE TABLE person_date
  2  (
  3   ID NUMBER(10)  PRIMARY KEY,
  4   DT DATE
  5  )
  6  /

Table created.

SQL> create table persons as select 1 id,'18-10-2010' dt from dual;

Table created.

SQL> INSERT INTO person_date SELECT P.ID ,  P.DT FROM  PERSONS P
  2  /
INSERT INTO person_date SELECT P.ID ,  P.DT FROM  PERSONS P
                                       *
ERROR at line 1:
ORA-01843: not a valid month


SQL> INSERT INTO person_date SELECT P.ID ,  P.DT FROM  PERSONS P
  2  LOG ERRORS REJECT LIMIT UNLIMITED;

0 rows created.

SQL> select count(*) from err$_person_date;

  COUNT(*)
----------
         1

SQL> 



SY.
...
Рейтинг: 0 / 0
18.10.2018, 15:39
    #39719441
Жук в муравейнике
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выдает ошибку ORA-01843: not a valid month
А что вам мешает проанализировать ваш текстовый persons.date на предмет кривых месяцев?
...
Рейтинг: 0 / 0
18.10.2018, 15:45
    #39719446
Goofy122
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выдает ошибку ORA-01843: not a valid month
ElicGoofy122Ты из тех гопн. которые заходят сюда чисто повыеб. , типо самый умный ?Дебил, знай своё место.

Тебя кто за яйца тянет ? Или тянут за всетаки ?
...
Рейтинг: 0 / 0
18.10.2018, 15:51
    #39719450
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выдает ошибку ORA-01843: not a valid month
Жук в муравейникеА что вам мешает проанализировать ваш текстовый persons.date на предмет кривых месяцев?Не проходил в школе названия месяцев или до 12 считать не умеет.
...
Рейтинг: 0 / 0
18.10.2018, 15:51
    #39719452
Goofy122
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выдает ошибку ORA-01843: not a valid month
123ййGoofy122, чисто-чисто повы.
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
Connected to Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 
SQL> create table bad_dates (dt_id number, dt varchar2(10));
Table created
SQL> insert into bad_dates (
  2     select 1, '2018/10/11' from dual union all
  3     select 2, '2018/99/05' from dual union all
  4     select 3, '2018/12/31' from dual union all
  5     select 4, '2018/12/99' from dual);
4 rows inserted
SQL>  create table test_dates (dt_id number, dt varchar2(500));
Table created
SQL>  exec dbms_errlog.create_error_log ('TEST_DATES');
PL/SQL procedure successfully completed
SQL>  insert into test_dates
  2     select dt_id, to_date(dt, 'YYYY/MM/DD') from bad_dates
  3     log errors into err$_test_dates reject LIMIT UNLIMITED;
2 rows inserted
SQL>  select * from test_dates;

     DT_ID DT
---------- --------------------------------------------------------------------------------
         1 11.10.18
         3 31.12.18
SQL>  select dt_id, dt, ora_err_mesg$ from err$_test_dates;
DT_ID                                                                            DT                                                                               ORA_ERR_MESG$
-------------------------------------------------------------------------------- -------------------------------------------------------------------------------- --------------------------------------------------------------------------------
2                                                                                2018/99/05                                                                       ORA-01843: not a valid month
4                                                                                2018/12/99                                                                       ORA-01847: day of month must be between 1 and last day of month

SQL> 




Спасибо извиняюсь за гоп.
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Выдает ошибку ORA-01843: not a valid month / 25 сообщений из 55, страница 1 из 3
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]