Oracle to_date函数.需要面膜

And*_*aev 6 oracle format mask to-date

我有这样的xml文件中的日期字符串:'2010-09-09T22:33:44.OZ'

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

Jef*_*emp 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
Run Code Online (Sandbox Code Playgroud)


Ale*_*ole 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
Run Code Online (Sandbox Code Playgroud)

但是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
Run Code Online (Sandbox Code Playgroud)

如果你想忽略它但它没有被修复,那么你需要先修剪它,比如(为简洁起见,使用绑定变量):

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
Run Code Online (Sandbox Code Playgroud)

  • 谢谢APC,我最初认为OZ是某种非正式的澳大利亚时区:) (2认同)