6

我有来自此类 xml 文件的日期字符串:'2010-09-09T22:33:44.OZ'

我只需要提取日期和时间。我想忽略符号 T 和 .OZ(时区)。我应该使用哪种面膜?提前致谢

4

2 回答 2

11
select TO_DATE('2010-09-09T22:33:44.OZ'
              ,'YYYY-MM-DD"T"HH24:MI:SS".OZ"')
from dual;

9/09/2010 10:33:44 PM
于 2010-09-16T08:09:14.950 回答
6

如果需要时区信息:

select to_timestamp_tz('2010-09-09T22:33:44.GMT','YYYY-MM-DD"T"HH24:MI:SS.TZR')
from dual;

09-SEP-10 22.33.44.000000000 GMT

但这OZ不是公认的时区缩写,因此您需要对其进行一些预转换。

如果您只想忽略该部分并且已修复,则可以执行@Jeffrey Kemp 所说的:

select to_date('2010-09-09T22:33:44.OZ','YYYY-MM-DD"T"HH24:MI:SS."OZ"')
from dual;

09/09/2010 22:33:44 -- assuming your NLS_DATE_FORMAT is DD/MM/YYYY HH24:MI:SS

如果您想忽略它但它没有修复,那么您需要先将其修剪掉,例如(为简洁起见,在此处使用绑定变量):

var input varchar2(32);
exec :input := '2010-09-09T22:33:44.OZ';
select to_date(substr(:input,1,instr(:input,'.') - 1),'YYYY-MM-DD"T"HH24:MI:SS')
from dual;

09/09/2010 22:33:44
于 2010-09-16T08:24:44.893 回答