【问题标题】:What is the format for '2015-10-01T12:00:00.000-03:00' in OracleOracle 中“2015-10-01T12:00:00.000-03:00”的格式是什么
【发布时间】:2017-09-29 22:26:10
【问题描述】:

我想在 Oracle 中将 '2015-10-01T12:00:00.000-03:00' varchar 转换为日期,如下所示:

select 
    to_date('2010-12-14:09:56:53', 'YYYY-MM-DD:HH24:MI:SS') - 
    to_date('2010-12-14:09:56:46', 'YYYY-MM-DD:HH24:MI:SS') 
from dual;

但对于那种格式。

如果问题不清楚,请告诉我原因,我会提供更多信息,不要否定我,我是菜鸟 :)。 Obs:我正在使用 Oracle Database 11g 企业版

【问题讨论】:

    标签: sql oracle


    【解决方案1】:

    使用TO_TIMESTAMP_TZ,如果要将其转换为日期,则可以将其转换为一个时区(通常为UTC),然后将CAST 转换为日期:

    SELECT CAST(
             TO_TIMESTAMP_TZ(
               '2015-10-01T12:00:00.000-03:00',
               'YYYY-MM-DD"T"HH24:MI:SS.FF3TZR'
             )
             AT TIME ZONE 'UTC'
             AS DATE
           )
    FROM   DUAL;
    

    【讨论】:

      【解决方案2】:

      试试这个:

      select to_timestamp('2015-10-01T12:00:00.000-03:00', 'YYYY-MM-DD"T"HH24:MI:SS.ff3"Z"')
      from dual;
      

      【讨论】:

      • 遗憾的是它给了我这个错误:ORA-01861: 01861. 00000 - “文字与格式字符串不匹配” *原因:输入中的文字必须与格式字符串中的文字长度相同(前导空格除外)。如果启用了“FX”修饰符,则文字必须完全匹配,没有多余的空格。 *操作:更正格式字符串以匹配文字。
      • "Z" 表示UTC时间,绝对不是UTC-03:00
      猜你喜欢
      • 2020-01-19
      • 1970-01-01
      • 2018-12-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-02
      • 2017-01-27
      • 1970-01-01
      相关资源
      最近更新 更多