如何将以下时间戳转换为简单日期?
Thu Nov 29 18:00:00 CST 2018
Thu Apr 26 01:00:00 BST 2018
答案 0 :(得分:0)
如果您假设将空格分隔的值作为数组,那么此代码实际上是按空间分割数据并从指定的索引中提取值。 然后将其组合并转换为日期格式
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;
更新了您评论中的代码,以添加HH:MM 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'
答案 1 :(得分:-1)
这将起作用:
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;