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

Oracle中如何将ISO时区时间格式转换为指定日期格式

问题原因

你现有写法的问题在于,使用SUBSTR截取字符串时仅取了字母T之前的日期段,直接丢弃了后续的时间、毫秒部分,自然无法转换得到完整的时间戳。

正确实现(Oracle环境)

不需要手动截取字符串,直接通过格式掩码匹配固定字符T、Z即可实现转换,写法如下:

SELECT TO_CHAR(
    TO_TIMESTAMP('2020-10-28T20:12:20.986Z', 'YYYY-MM-DD"T"HH24:MI:SS.FF3"Z"'),
    'DD-FMMON-RR FMHH:MI PM'
) AS converted_time
FROM dual;

参数说明

  • 时间转换的格式掩码中,用双引号包裹的"T"、"Z"会作为固定字符匹配,直接识别输入值里的对应标识,不需要额外做字符串截取
  • FF3对应输入里的3位毫秒部分,匹配986这段内容
  • 输出格式掩码中,FMMON会输出大写的月份缩写且不带多余空格,FMHH会去掉小时数前的前导零,刚好匹配你需要的8:12 PM而非08:12 PM的效果
  • 执行上述语句输入样例值后,输出结果为:28-OCT-20 8:12 PM,完全符合预期要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 10:06:03