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

DataWeave中oracle.sql.timestamp转java.sql.timestamp方法及报错解决

解决方案:Oracle Timestamp 转 Java Timestamp/DataWeave 日期类型

核心错误原因

你遇到的「Cannot coerce array to date/string」错误,本质是迭代变量引用错误:在map操作里,你用了payload.doj,但payload是整个输入数组,payload.doj会提取数组中所有元素的doj字段形成一个新数组,自然无法直接转成单个日期/字符串。正确的引用应该是当前迭代的object.doj。

正确转换代码

根据需求,提供三种常用转换方案:

方案1:直接转为DataWeave Date类型

Payload map(object, index) -> {
    DOJ: object.doj as Date
}

oracle.sql.Timestamp可以直接被DataWeave识别并转换为内置的Date类型,无需额外格式处理。

方案2:显式转为java.sql.Timestamp类型

如果需要输出严格的java.sql.Timestamp对象(比如后续对接Java组件),可以直接指定目标类型:

Payload map(object, index) -> {
    DOJ: object.doj as java.sql.Timestamp
}

方案3:先转字符串再转日期(针对特殊格式场景)

如果确实需要通过字符串中间转换(比如自定义日期格式),注意修正变量引用并补全格式字符串的闭合引号:

Payload map(object, index) -> {
    DOJ: (object.doj as String {format: "yyyy-MM-dd HH:mm:ss"}) as DateTime
}

注意:格式字符串要和oracle.sql.Timestamp转字符串后的实际格式匹配,避免转换失败。

验证说明

修正变量引用后,object.doj指向的是单个oracle.sql.Timestamp对象,而非数组,此时类型转换就能正常执行,不会再出现数组转日期/字符串的错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 10:10:01