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

时间:2018-02-28 07:57:01

标签: marklogic marklogic-9

较旧的MarkLogic版本(XQuery 1.0-ml之前版本)似乎支持一个函数来计算两个日期(https://docs.marklogic.com/fn:subtract-dateTimes-yielding-yearMonthDuration)之间的年月和月份。文档页面现在建议“ - ”运算符应该使用晚于0.9毫升的版本。该运营商以天和小时的形式返回一段时间,而不是几年,几个月和几天,由于闰年,无法正确地将天数和小时数转换为数年和数月。是否有另一个函数为XQuery 1.0-ml执行此操作?

1 个答案:

答案 0 :(得分:2)

自己构建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")

HTH!

相关问题