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

Hana转Oracle遇ORA-30076错误,求DATEUPD字段正确转换方案

解决ORA-30076:DATE字段无法用于提取操作的问题

Oracle中DATE类型无法直接使用EXTRACT(HOUR/MINUTE/SECOND FROM ...),因为这些提取函数仅支持TIMESTAMP类型。要获取DATE字段的时分秒部分,最简便高效的方式是使用TO_CHAR函数直接格式化。

修正后的完整SQL脚本

SELECT 
    P2_RULE,
    P2_ORIGIN,
    Rule_def.DATEUPD as P2_DATE,
    -- 用TO_CHAR直接格式化时分秒,替代原有的EXTRACT拼接逻辑
    TO_CHAR(Rule_def.DATEUPD, 'HH24:MI:SS') AS P2_DATETIME,
    Rule_def.USERUPD || ' | ' || DESC_UTENTE as P2_USER
FROM (
    SELECT 
        P2_RULE,
        P2_ORIGIN,
        DATEUPD,
        USERUPD,
        ROW_NUMBER() over (partition by P2_RULE, p2_origin order by DATEUPD desc) as N_row
    FROM AW_PII_P20018_000001
    WHERE dateupd is not null) Rule_def
JOIN UTENTE
ON Rule_def.USERUPD = COD_UTENTE    
WHERE N_ROW = 1

备选方案(若坚持使用EXTRACT)

如果一定要保留提取拼接的逻辑,需要先将DATE字段转换为TIMESTAMP类型:

substr('0' || EXTRACT(HOUR FROM CAST(Rule_def.DATEUPD AS TIMESTAMP)), 2) 
|| ':' || 
substr('0' || EXTRACT(MINUTE FROM CAST(Rule_def.DATEUPD AS TIMESTAMP)), 2)
|| ':' || 
substr('0' || EXTRACT(SECOND FROM CAST(Rule_def.DATEUPD AS TIMESTAMP)), 2) AS P2_DATETIME

但此写法冗余且效率低于TO_CHAR,不推荐使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 14:39:57