You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle如何将带时区的ISO时间戳字符串转换为指定日期格式

错误原因

你写的SQL无法识别主要有三个问题:

  • 格式掩码中的常量字符T没有用双引号包裹,Oracle会将其识别为格式标识符而非普通字符,匹配失败
  • 原时间戳用的是24小时制的时间,你用了12小时制的格式符hh,应该替换为hh24
  • 原字符串包含毫秒部分.075和时区偏移+02:00,你的格式掩码没有覆盖这两部分,匹配不完整

解决方法

写法1:用to_timestamp匹配全格式(忽略时区)

如果不需要处理时区偏移,直接补全格式掩码即可:

select to_char(
         to_timestamp('2021-09-07T18:24:25.075+02:00', 'yyyy-mm-dd"T"hh24:mi:ss.ff3tzh:tzm'),
         'dd.mm.yyyy hh24.mi.ss'
       ) as format_time 
from dual;

写法2:用to_timestamp_tz保留时区信息转换

如果需要严格按输入的时区转换,用时区时间戳函数更稳妥:

select to_char(
         to_timestamp_tz('2021-09-07T18:24:25.075+02:00', 'yyyy-mm-dd"T"hh24:mi:ss.ff3tzh:tzm'),
         'dd.mm.yyyy hh24.mi.ss'
       ) as format_time 
from dual;

格式符说明

  • "T":双引号包裹表示是普通常量字符,不做格式解析
  • hh24:24小时制的小时占位符
  • ff3:3位精度的毫秒占位符,对应原字符串的.075
  • tzh:tzm:时区小时和时区分钟的占位符,对应原字符串的+02:00

内容的提问来源于stack exchange,提问作者bullfighter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 09:18:00