Извлечь дату с меткой времени с часовым поясом

Как мне преобразовать следующие временные метки в простую дату?

Thu Nov 29 18:00:00 CST 2018
Thu Apr 26 01:00:00 BST 2018

2 ответа

Решение

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

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'

Это будет работать:

select trunc(systimestamp), systimestamp from dual; 

также можно использовать:

Select to_char(to_date('15-JUN-16 22:54:39','DD-MON-YY 
HH24:MI:SS'),'DD-MON-YY') from dual;
Другие вопросы по тегам