этот код фактически разделяет данные по пробелам и извлекает значения из указанного индекса, если вы принимаете значения, разделенные пробелом, как массив.а затем объединить его и преобразовать в формат даты
SELECT to_date(
REGEXP_SUBSTR('Thu Nov 29 18:00:00 CST 2018', '[^ ]+', 1, 3) ||' '||
REGEXP_SUBSTR('Thu Nov 29 18:00:00 CST 2018', '[^ ]+', 1, 2) ||' '||
REGEXP_SUBSTR('Thu Nov 29 18:00:00 CST 2018', '[^ ]+', 1, 6),'DD-MM-YYYY' )
FROM dual ;
, вы также можете использовать так:
SELECT to_date(
REGEXP_SUBSTR(columnname, '[^ ]+', 1, 3) ||' '||
REGEXP_SUBSTR(columnname, '[^ ]+', 1, 2) ||' '||
REGEXP_SUBSTR(columnname, '[^ ]+', 1, 6),'DD-MM-YYYY' )
FROM tablename;
обновленный код из ваших комментариев, чтобы добавить ЧЧ: ММ AM / PM cst /gst:
SELECT to_char(to_timestamp(
REGEXP_SUBSTR('Thu Nov 29 18:00:00 CST 2018', '[^ ]+', 1, 3) ||' '||
REGEXP_SUBSTR('Thu Nov 29 18:00:00 CST 2018', '[^ ]+', 1, 2) ||' '||
REGEXP_SUBSTR('Thu Nov 29 18:00:00 CST 2018', '[^ ]+', 1, 6) ||' '||
REGEXP_SUBSTR('Thu Nov 29 18:00:00 CST 2018', '[^ ]+', 1, 4)
,'DD-MM-YYYY hh24:mi:ss' ),'DD-MM-YYYY HH:MI AM' )||' '||
REGEXP_SUBSTR('Thu Nov 29 18:00:00 CST 2018', '[^ ]+', 1, 5)
FROM dual ;
примечание: это будет работать, только если все данные в вашем столбце имеют формат выше.
на выходе будет простая дата, подобная этой: '29 -11-2018 'если вы хотите, чтобы вывод был '29 -NOV-2018', вы можете заменить код на 'DD-MON-YYYY'