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

问题描述 投票:2回答:1

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

marklogic marklogic-9
1个回答
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!

© www.soinside.com 2019 - 2024. All rights reserved.