marklogic - 如何计算两个 xs :dates? 之间的年份和月份

标签 marklogic marklogic-9

旧版 MarkLogic 版本(XQuery 1.0-ml 之前)似乎支持计算两个日期之间的年月周期的函数 ( https://docs.marklogic.com/fn:subtract-dateTimes-yielding-yearMonthDuration )。文档页面现在建议“-”运算符应与高于 0.9-ml 的版本一起使用。但是,该运算符返回以天和小时为单位的时间段,而不是以年、月和日为单位的时间段,并且由于闰年的原因,无法正确地将天和小时时间段转换为年和月。是否有另一个函数可以为 XQuery 1.0-ml 执行此操作?

最佳答案

你自己构造一个yearMonthDuration是相当容易的。我已经在 ml-date-ranges 中这样做了。归结为:

let $year-diff := year-from-date($max) - year-from-date($min)
let $month-diff := month-from-date($max) - month-from-date($min)
return
  xs:yearMonthDuration("P" || (($year-diff * 12) + $month-diff) || "M")

呵呵!

关于marklogic - 如何计算两个 xs :dates? 之间的年份和月份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49024546/

相关文章:

java - 如何在 XQuery 中使用或实现数组?

MarkLogic sql S1 排序规则显示错误的值

marklogic - 用于在 MarkLogic 中搜索文档属性的节点代码

marklogic - 删除多个集合失败。

marklogic - 如何使用 xdmp :eval in Marklogic? 进行时间点查询

xml - 如何从 XML 中获取所有属性名称,而不是特定节点的值?

marklogic - XML 标签值的分面

json - 未知内容类型 : json How to load JSON document as XML in MarkLogic 8

xquery - 为什么我不能欺骗我的 IP 地址并欺骗 Marklogic 函数 'xdmp:get-request-client-address' 以为我在世界的其他地方?

xquery - fn :replace to return one string on iteration