Извлечь дату с меткой времени с часовым поясом
Как мне преобразовать следующие временные метки в простую дату?
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;