Я пытаюсь изменить дату с «дд / мм / гггг» на «дд-мм-гг», но безуспешно.В моем наборе данных у меня есть разные форматы дат, поэтому я хочу отфильтровать их, чтобы правильно исправить
Пример:
DATES
-------
09-MAY-18
09-NOV-18
09-OCT-18
1/2/2017
1/3/2017
05/03/2018
12-OCT-18
так, даты «1/2/2017»,«1/3/2017», «05/03/2018» должны иметь формат «DD-MM-YYYY» как «09 -MAY-18» или «09 -NOV-18 ».
формула, которую я пытался запустить:
UPDATE TESTE_DATAS SET DATAS = TO_DATE(REGEXP_REPLACE(DATAS, '^\d+\/\d+\/\d+$',
CONCAT(
CONCAT(
CONCAT(
CONCAT(
REGEXP_SUBSTR(DATAS, '^(\d+)(\/)(\d+)(\/)(\d+)$', 1, 1, 'i', 1),
'-'),
REGEXP_SUBSTR(DATAS, '^(\d+)(\/)(\d+)(\/)(\d+)$', 1, 1, 'i', 3)),
'-'),
REGEXP_SUBSTR(DATAS, '^(\d+)(\/)(\d+)(\/)(\d+)$', 1, 1, 'i', 5))
),'DD-MM-YY') WHERE REGEXP_LIKE(DATAS,'^\d+\/\d+\/\d+$');
В итоге я получил следующее:
Error report -
SQL Error: ORA-01843: not a valid month
01843. 00000 - "not a valid month"
*Cause:
*Action:
и ожидаемый результат должен быть:
DATES
-------
09-MAY-18
09-NOV-18
09-OCT-18
01-FEB-17
01-MAR-17
05-MAR-18
12-OCT-18