【问题标题】:Oracle to_date function. Mask neededOracle to_date 函数。需要口罩
【发布时间】:2010-09-16 07:46:16
【问题描述】:

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

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

【问题讨论】:

标签: oracle format mask to-date


【解决方案1】:
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

【讨论】:

    【解决方案2】:

    如果需要时区信息:

    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
    

    【讨论】:

    • 哦,好的,所以我想这意味着可以忽略时区部分。在这种情况下,@Jeffrey 的回答更加简洁。
    • 感谢 APC,我最初认为 OZ 是某种非官方的澳大利亚时区 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-01
    • 2012-07-28
    • 2011-10-28
    • 2020-11-24
    • 1970-01-01
    相关资源
    最近更新 更多