Как можно в одном запросе преобразовать строку c датой различных форматов в одно поле даты?

Добрый день, имеется колонка типа текст, в которой значения дат. Нужно преобразовать текст в формат даты
Но проблема в том, что формат даты представлен в нескольких вариантах, а именно:

FIELD
mm/dd/yyyy
yyyy-mm-dd
dd.mm.yyyy


Т.е. по одному формату вопросов нет

SELECT TO_DATE(field, 'mm/dd/yyyy')
  FROM table


А как быть, когда их несколько встречаются, и чтобы результат уместить в одну колонку?

FIELD               FIELD
01/30/2020          01/30/2020
2020-01-30    ->    01/30/2020
30.01.2020          01/30/2020
  • Вопрос задан
  • 92 просмотра
Пригласить эксперта
Ответы на вопрос 1
@strelkov_av Автор вопроса
Сделал по совету выше через CASE, не знал что внутри него можно регулярки оказывается использовать

TO_DATE(field,
         CASE
           WHEN regexp_like(field, '^\d{4}-\d{1,2}-\d{1,2}$') THEN 'yyyy-mm-dd'
           WHEN regexp_like(field, '^\d{1,2}\/\d{1,2}\/\d{4}$') THEN 'mm/dd/yyyy'
           WHEN regexp_like(field, '^\d{1,2}.\d{1,2}.\d{4}$') THEN 'dd.mm.yyyy'
           ELSE NULL
         END
         ) AS field
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы