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

如何在XQuery中计算两个DateTime值的分钟差值?

解决方法:将dayTimeDuration转换为总分钟数

这问题我太熟了!你已经成功解析出两个DateTime并计算出了dayTimeDuration结果,要把它转成总分钟数,直接用XQuery内置的时长分量提取函数做算术计算就搞定了。

完整代码示例

xquery version "0.9-ml";

-- 解析起始和结束时间
let $start-time := xdmp:parse-dateTime("[Y0001]-[M01]-[D01]T[H01]:[m01]:[s01]","2017-01-17T08:00:00")
let $end-time := xdmp:parse-dateTime("[Y0001]-[M01]-[D01]T[H01]:[m01]:[s01]","2017-01-17T22:45:00")

-- 计算时间差得到dayTimeDuration
let $duration := fn:subtract-dateTimes-yielding-dayTimeDuration($start-time, $end-time)

-- 转换为总分钟数
let $total-minutes := 
  (fn:days-from-dayTimeDuration($duration) * 24 * 60) + 
  (fn:hours-from-dayTimeDuration($duration) * 60) + 
  fn:minutes-from-dayTimeDuration($duration)

return $total-minutes

代码说明

  • fn:days-from-dayTimeDuration($duration):提取时长中的天数,转成分钟(一天=24*60分钟)
  • fn:hours-from-dayTimeDuration($duration):提取时长中的小时数,转成分钟(一小时=60分钟)
  • fn:minutes-from-dayTimeDuration($duration):提取时长中的分钟数
  • 三者相加就得到了带符号的总分钟数:你的例子里结果会是-885,负号表示$start-time早于$end-time(因为你用起始时间减结束时间得到了负时长)

可选:获取绝对值(正的分钟数)

如果只需要时间差的绝对值,给结果套个fn:abs()就行:

return fn:abs($total-minutes)

这样就会返回885,也就是14小时45分钟对应的总分钟数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:46:01