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

MarkLogic TDE中集合日期字符串转Date类型报错求助

解决MarkLogic TDE中将提取的日期字符串转换为Date类型的错误

错误原因

MarkLogic的Date标量类型严格要求值遵循ISO 8601标准格式(YYYY-MM-DD),而你当前提取的日期字符串是DD-MM-YYYY格式(如01-01-2025),直接设置scalar-type为Date会因格式不兼容报错。

解决方案

需要在TDE的<val>表达式中,先将提取的DD-MM-YYYY格式字符串转换为MarkLogic认可的ISO日期格式,使用XQuery的fn:parse-date函数实现格式转换。

修改后的TDE配置

<column>
  <name>doc_collection</name>
  <scalar-type>Date</scalar-type>
  <val>
    fn:parse-date((xdmp:node-collections(.)[matches(.,"[0-9]+-[0-9]+-[0-9]+")]), "[D01]-[M01]-[Y0001]")
  </val>
  <invalid-values>reject</invalid-values>
  <nullable>true</nullable> 
</column>

关键说明

  • fn:parse-date函数的第二个参数是格式模式:
    • [D01]:匹配两位数字的日(如01)
    • [M01]:匹配两位数字的月(如01)
    • [Y0001]:匹配四位数字的年(如2025)
  • 如果xdmp:node-collections(.)返回多个匹配的日期字符串,需指定取单个值(比如取第一个)避免序列报错:
    fn:parse-date((xdmp:node-collections(.)[matches(.,"[0-9]+-[0-9]+-[0-9]+")])[1], "[D01]-[M01]-[Y0001]")
    
  • 若存在其他日期格式(如MM-DD-YYYY),需对应调整格式模式,或提前做格式校验,防止触发invalid-values="reject"导致文档无法映射。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 09:12:46