Извлечь дату с отметкой времени с часовым поясом - PullRequest
0 голосов
/ 18 сентября 2018

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

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

Ответы [ 2 ]

0 голосов
/ 18 сентября 2018

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

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'

0 голосов
/ 18 сентября 2018

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

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;
...