如果您将空格分隔的值假定为数组,则此代码实际上按空格拆分数据并从指定索引中提取值。
然后将其合并并转换为日期格式
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;
从您的 cmets 更新代码以添加 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”