Повторяя то, что было упомянуто в комментариях к вашему вопросу, лучше всего иметь фактическое поле типа DATE
вместо VARCHAR2
, а если вам нужны определенные форматы отображения, сохраните их в другом поле в качестве шаблона формата.,Тем не менее, вы можете использовать REGEXP_LIKE
для проверки формата, используя шаблоны в приведенном ниже примере.
with dateinfo as (
select 1 as id, '2018-MARCH-10' as dtString from dual
union all
select 2 as id, '10 MARCH 2018' as dtString from dual )
select id, dtString,
case
when regexp_like(dtString, '^[0-9]{4}-.[a-zA-Z]{3,}-.[0-9]{1,2}$') then 'format1'
when regexp_like(dtString, '^[0-9]{1,2} [a-zA-Z]{3,} [0-9]{4}$') then 'format2'
else 'no format'
end as dtFormat
from dateinfo;