Как отформатировать нестандартную строку в формат даты - PullRequest
0 голосов
/ 01 октября 2019

Есть ли способ выбрать строки '03 / 01/2018 'и '09 -NOV-17', чтобы результаты были представлены в формате «MM / DD / YYYY»?

Результаттакже может быть строкой.

Ответы [ 2 ]

1 голос
/ 01 октября 2019

Нет необходимости использовать регулярное выражение - простой LIKE подходит для выбора формата DATE.

Пример

with my_data as (
select '03/01/2018' dt from dual union all
select '09-NOV-17' from dual)
select 
dt,
case when dt like '__/__/____' then to_date(dt,'dd/mm/yyyy')
when dt like '__-___-__' then  to_date(dt,'dd-mon-rr') 
end as dt_date
from my_data;

.

DT         DT_DATE            
---------- -------------------
03/01/2018 03.01.2018 00:00:00
09-NOV-17  09.11.2017 00:00:00
0 голосов
/ 01 октября 2019

Вы можете использовать выражение case. Предполагая, что все значения имеют один из двух форматов, вы можете конвертировать в дату, выполнив:

select (case when col like '%-%-%' then to_date(col, 'MM/DD/YYYY')
             else to_date(col, 'DD-MON-YY')
        end)

Я предпочитаю значение в формате даты. Вы можете использовать to_char() для преобразования в формат строки по вашему выбору.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...