Я пытаюсь преобразовать столбец DATA_EMISSAO , который имеет формат char , но содержит все даты для таблицы (она содержит только даты).
Проблема в том, что способ загрузки информации в Oracle позволил установить ряды с различными шаблонами, как показано ниже:
![enter image description here](https://i.stack.imgur.com/GRgvR.png)
Как вы можете видеть, существует 2 шаблона: «ДД / ММ / ГГГГ» и формат даты в формате Excel.
1) Сначала я попытался преобразовать их с помощью кода:
select distinct to_char(DATA_EMISSAO, 'DD-MM-YYYY') from MASTERSAF;
Но получил ошибку:
ORA-01722: invalid number
01722. 00000 - "invalid number"
*Cause: The specified number was invalid.
*Action: Specify a valid number.
2) Затем я попробовал следующее:
select distinct to_char(to_date(DATA_EMISSAO, 'DD-MM-YYYY'), 'DD-MM-YYYY') from MASTERSAF;
Но безуспешно ...
ORA-01847: day of month must be between 1 and last day of month
01847. 00000 - "day of month must be between 1 and last day of month"
*Cause:
*Action:
Как вы думаете, должно быть лучше построить условие длячитать каждое условие строки и применять правильное «преобразование»?
Кроме того, я не знаю почему, но если я запускаю
select to_char(to_date(DATA_EMISSAO, 'DD/MM/YYYY') + 0, 'DD/MM/YYYY') as DATES2 from MASTERSAF;
Кажется, все идет хорошо, но если я поставлю отчетливо до,
select distinct to_char(to_date(DATA_EMISSAO, 'DD/MM/YYYY') + 0, 'DD/MM/YYYY') as DATES2 from MASTERSAF;
Я получаю следующую ошибку:
ORA-01847: day of month must be between 1 and last day of month
01847. 00000 - "day of month must be between 1 and last day of month"
*Cause:
*Action:
У вас есть идея исправить даты?(к сожалению, я не могу изменить на Excel, потому что база данных слишком велика ....)