【问题标题】:Convert datetime format in Oracle SQL在 Oracle SQL 中转换日期时间格式
【发布时间】:2016-07-13 15:59:13
【问题描述】:

我有这样格式的日期:13-JUL-2016 14:38:39,969962 +00:00 我想要这种格式的日期DD/MM/YYYY HH:MM:SS 我使用了以下请求:

select to_date('13-JUL-2016 14:38:39,969962 +00:00',DD/MM/YYYY HH:MM:SS) from dual

但我收到以下错误:

16:57:51 ORA-01036: 非法变量名/编号

【问题讨论】:

  • 格式字符串需要单引号。
  • 你没有引用格式,所以你正在做dd divided by mm divided by yyyy 等等......,而dual 中不存在这些“字段”。当然,您的格式与输入字符串不匹配,因此即使您引用了格式,它也无法首先解析您的日期字符串。

标签: sql oracle datetime


【解决方案1】:

输入字符串太长,无法进入date,因此我认为您需要将其设置为时间戳,然后将其设置为to_char,以获得所需的日期格式:

select to_char
       ( to_timestamp_tz('13-JUL-2016 14:38:39,969962 +00:00','DD-MON-YYYY HH24:MI:SS,FF TZH:TZM')
       , 'DD/MM/YYYY HH24:MI:SS' ) as converted_date
from dual;

CONVERTED_DATE
-------------------
13/07/2016 14:38:39

【讨论】:

    【解决方案2】:

    您可以将输出格式化为char,给出以下内容:

    select
    to_char(to_date(substr('13-JUL-2016 14:38:39,969962 +00:00',1,20), 'DD-MON-YYYY HH24:MI:SS'), 'DD/MM/YYYY HH24:MI:SS') as char_date_format
     from dual;
    

    输出:

    CHAR_DATE_FORMAT    
    ------------------- 
    13/07/2016 14:38:39 
    

    【讨论】:

      猜你喜欢
      • 2013-12-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-15
      • 2021-11-10
      相关资源
      最近更新 更多