Строка на дату SQL

У меня есть поле Comments (Clob), которое представляет собой набор времени, когда был сделан комментарий, сделанный комментарий и сам комментарий.

Мне нужно извлечь «Дата», «Комментарий» из поля.

Используя регулярные выражения, я смог извлечь поля даты и поле comment_by, но дата в символе.

Я не могу преобразовать это поле в Date.

Пример комментариев:

7/18/2018 10:36:29 AM, beginj requesting cancellation as steps are no longer viable.

5/16/2018 8:28:04 AM, josephav Not applicable for GSC

Я могу получить «дату», используя это регулярное выражение (RE):

regexp_substr((dbms_lob.substr(requestcommentsdisplay,50,1)),'[^ ]+',1)

Я могу получить имя Comment_by, используя это регулярное выражение (RE)

regexp_substr((dbms_lob.substr(requestcommentsdisplay,50,1)),'[a-z]+',1) 

Таким образом, даты после извлечения с использованием RE выглядят следующим образом:

10/5/2017
4/2/2012
12/31/2015
3/16/2014

Мне нужно преобразовать их в правильные даты, чтобы я мог использовать их в своем коде.

Любая помощь приветствуется :)

Спасибо

Вы можете использовать TO_DATE

PM 77-1 21.02.2019 22:19

ORA-01843: неверный месяц

Goks 21.02.2019 22:30
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
1
2
74
2

Ответы 2

Использовать

   SELECT 
   CASE WHEN (length(<regex_string>). 
     <9)
  Then 
TO_DATE('0'||<regex_string>,'MM/DD/YYYY') 

but oracle parses it with single digit as well though you can try to debug and print dates for single digit via this
condition.

   ELSE
TO_DATE(<regex_string>,'MM/DD/YYYY') 
    END CASE FROM TABLE;

для преобразования строки в формат даты, поскольку o/p, который вы получили от regex_substr, является строкой.

Это позволит вам прочитать ввод в формате, который вы получаете, и преобразовать в фактический формат даты оракулов.

Спасибо, Химаншу, но я получаю следующую ошибку: ORA-01843: неверный месяц.

Goks 21.02.2019 22:30

затем проверьте годовые данные, которые у вас есть в месяц в виде одной цифры в большинстве мест, поэтому используйте оператор case, чтобы присоединиться к дополнительному M как значение 0 с оператором CASE

Himanshu 22.02.2019 05:40

Вы можете установить параметр nls_territory в зависимости от вашей страны перед вызовом запроса

alter session set nls_territory = 'AMERICA';--alternatively convert to 'TURKEY' as an example

а затем попробуйте следующее

with tab(date_chr) as
(
 select '10/5/2017'  from dual union all
 select '4/2/2012'   from dual union all
 select '12/31/2015' from dual union all
 select '3/16/2014'  from dual  
)
select to_date(date_chr,'MM/DD/YYYY')
  from tab;

Другие вопросы по теме