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

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

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

при помощи DBMS_ERRLOG ?
...
Рейтинг: 0 / 0
Выдает ошибку ORA-01843: not a valid month
    #39719259
mibin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
Выдает ошибку ORA-01843: not a valid month
    #39719394
Фотография Goofy122
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Создал таблицу 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
Выдает ошибку ORA-01843: not a valid month
    #39719399
Фотография Goofy122
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Извиняюсь

Код: 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
Выдает ошибку ORA-01843: not a valid month
    #39719408
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Goofy122вот так

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

SY.
...
Рейтинг: 0 / 0
Выдает ошибку ORA-01843: not a valid month
    #39719409
Sheldon Cooper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Выдает ошибку ORA-01843: not a valid month
    #39719413
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sheldon Cooperдо вставки кривой даты дело не доходитда и если бы дошло...
...
Рейтинг: 0 / 0
Выдает ошибку ORA-01843: not a valid month
    #39719416
Фотография Goofy122
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Выдает ошибку ORA-01843: not a valid month
    #39719419
123йй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Goofy122Создал таблицу person_date


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



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


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



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


Ты из тех гопн. которые заходят сюда чисто повыеб. , типо самый умный ?
...
Рейтинг: 0 / 0
Выдает ошибку ORA-01843: not a valid month
    #39719424
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Goofy122типо самый умный ?Противопоставляешь себя умным? Не напрягайся, это и так очевидно.
...
Рейтинг: 0 / 0
Выдает ошибку ORA-01843: not a valid month
    #39719432
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.
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
Выдает ошибку ORA-01843: not a valid month
    #39719433
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Goofy122PERSONS.DATE в формате стринг вообще

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

SY.
...
Рейтинг: 0 / 0
Выдает ошибку ORA-01843: not a valid month
    #39719436
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Goofy122Ты из тех гопн. которые заходят сюда чисто повыеб. , типо самый умный ?Дебил, знай своё место.
...
Рейтинг: 0 / 0
Выдает ошибку ORA-01843: not a valid month
    #39719439
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Исключение при 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
Выдает ошибку ORA-01843: not a valid month
    #39719441
Фотография Жук в муравейнике
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что вам мешает проанализировать ваш текстовый persons.date на предмет кривых месяцев?
...
Рейтинг: 0 / 0
Выдает ошибку ORA-01843: not a valid month
    #39719446
Фотография Goofy122
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ElicGoofy122Ты из тех гопн. которые заходят сюда чисто повыеб. , типо самый умный ?Дебил, знай своё место.

Тебя кто за яйца тянет ? Или тянут за всетаки ?
...
Рейтинг: 0 / 0
Выдает ошибку ORA-01843: not a valid month
    #39719450
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Жук в муравейникеА что вам мешает проанализировать ваш текстовый persons.date на предмет кривых месяцев?Не проходил в школе названия месяцев или до 12 считать не умеет.
...
Рейтинг: 0 / 0
Выдает ошибку ORA-01843: not a valid month
    #39719452
Фотография Goofy122
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
25 сообщений из 55, страница 1 из 3
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Выдает ошибку ORA-01843: not a valid month
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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