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

Oracle 11g中TO_CHAR日期转换输出异常问题咨询

解决Oracle 11g中TIMESTAMP格式转换异常的问题

嘿,我一眼就发现你遇到的格式异常根源了——日期格式模型里的分钟部分用错了符号!

问题分析

你写的格式字符串是'YYYY-MM-DD HH24:MM:SSxFF3',这里的MM在Oracle日期格式中代表的是月份(01-12),而不是分钟!这就导致系统会把当前日期的月份值填充到分钟的位置,比如10月的数据,分钟位会固定显示成10,完全不符合实际时间,这就是你看到的异常。

修正方案

把格式字符串里的MM替换成MI(Oracle中MI才是代表分钟的标识符,范围00-59),同时保留FF3来指定3位毫秒小数,这正是你需要的格式。

修正后的完整SQL如下:

SELECT 
    NVL(CD.RECEIPT_DATE_TS, CAST(CD.RECEIPT_DATE AS TIMESTAMP)) AS receipt_ts,
    TO_CHAR(
        NVL(CD.RECEIPT_DATE_TS, CAST(CD.RECEIPT_DATE AS TIMESTAMP)),
        'YYYY-MM-DD HH24:MI:SSxFF3'
    ) AS RECEIPT_TS_conv
    -- 这里加上你的其他字段
FROM YOUR_TABLE CD; -- 记得替换成实际的表名

额外说明

你原来的NVL(CD.RECEIPT_DATE_TS, CAST(CD.RECEIPT_DATE AS TIMESTAMP))逻辑是没问题的:优先使用已有的TIMESTAMP类型字段,当该字段为空时,把DATE类型的日期转换为TIMESTAMP,确保统一的时间类型基础,这部分不需要修改。

内容的提问来源于stack exchange,提问作者Larry C. Lyons

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:33:37