У меня очень грязное поле даты, которое подается из нескольких систем, каждая со своим собственным форматом даты.
У меня есть:
ДД-ММ-ГГ чч: мм: сс.сссс
DD-MON-YY чч: мм: сс
ДД-ММ-ГГГГ чч: мм: сс.сссс
Все это хранится в поле varchar2 . Теперь я должен сделать поиск между диапазонами дат, и это вызывает у меня проблемы. Как я могу подойти к этому?
Вот некоторые фрагменты кода, которые я пробовал:
Стандартный подстрок работает хорошо, но я не могу учитывать разные форматы даты:
select substr(created_on, 1,9) as date2 from rtl.HK_Alerts
В идеале, если я смогу заставить это работать:
select to_date(created_on, 'dd-mon-yy') as date_convert from rtl.HK_Alerts
Тогда я могу сделать это:
select * from my_table
where to_date(created_on, 'dd-mon-yy') > '01-Jan-1970'
and to_date(***strong text***created_on, 'dd-mon-yy') < '31-Jan-1970'
Кроме того, как я могу учесть разные форматы даты из разных систем? К сожалению, нет системного идентификатора, с которым я мог бы работать.
вот изображение некоторых дат:
07-ЯНВ-19 01.53.47.702000000
07-ЯНВ-19 01.53.47.992000000
07 января 19.01.53.48.186000000
07-ЯНВ-19 01.53.48.360000000
07-ЯНВ-19 01.53.48.548000000
07-ЯНВ-19 01.53.48.709000000
07 января 19.01.53.48.900000000
20 ЯНВ-19 22.49.30.801000000
20 ЯНВ-19 22.49.30.014000000
20-ЯНВ-19 22.49.33.968000000