计算XQuery中日期时间值之间的差异(以分钟为单位)

计算XQuery中日期时间值之间的差异(以分钟为单位),xquery,marklogic,Xquery,Marklogic,我想用分钟计算日期和时间之间的差值 xdmp:parse-dateTime("[Y0001]-[M01]-[D01]T[H01]:[m01]:[s01]","2017-01-17T08:00:00") xdmp:parse-dateTime("[Y0001]-[M01]-[D01]T[H01]:[m01]:[s01]","2017-01-17T22:45:00") 我试着用 xquery version "0.9-ml" fn:subtract-dateTimes-yielding-dayTi

我想用分钟计算日期和时间之间的差值

xdmp:parse-dateTime("[Y0001]-[M01]-[D01]T[H01]:[m01]:[s01]","2017-01-17T08:00:00")
xdmp:parse-dateTime("[Y0001]-[M01]-[D01]T[H01]:[m01]:[s01]","2017-01-17T22:45:00")
我试着用

xquery version "0.9-ml"
fn:subtract-dateTimes-yielding-dayTimeDuration(
  xdmp:parse-dateTime("[Y0001]-[M01]-[D01]T[H01]:[m01]:[s01]","2017-01-17T08:00:00"),
  xdmp:parse-dateTime("[Y0001]-[M01]-[D01]T[H01]:[m01]:[s01]","2017-01-17T22:45:00")
)
输出为

-PT14H45M

我希望以分钟为单位的输出减去日期,然后除以dayTimeDuration 1分钟:

xdmp:parse-dateTime("[Y0001]-[M01]-[D01]T[H01]:[m01]:[s01]","2017-01-17T08:00:00")
xdmp:parse-dateTime("[Y0001]-[M01]-[D01]T[H01]:[m01]:[s01]","2017-01-17T22:45:00")
let $date1 := xs:dateTime("2017-01-17T08:00:00")
let $date2 := xs:dateTime("2017-01-17T22:45:00")
return fn:abs(($date1 - $date2) div xs:dayTimeDuration("PT1M"))

减去日期,然后除以dayTimeDuration 1分钟:

let $date1 := xs:dateTime("2017-01-17T08:00:00")
let $date2 := xs:dateTime("2017-01-17T22:45:00")
return fn:abs(($date1 - $date2) div xs:dayTimeDuration("PT1M"))

您也可以使用functx库:


您还可以使用functx库:


顺便说一下,这个日期模式匹配xs:dateTime格式,所以你可以只做xs:dateTime(“2017-01-17T08:00:00”)顺便说一下,这个日期模式匹配xs:dateTime格式,所以你可以只做xs:dateTime(“2017-01-17T08:00:00”)functx库也在做一个
div xs:dayTimeDuration(“PT1M”)
。伟大的图书馆,但对于这样一个简单的任务来说可能有点过分了是 啊我知道-但这是一个很好的图书馆,知道它是可用的。并不是每项任务都那么简单。另外,图书馆的文档非常好,这是一个很好的方式来了解事情是如何完成的。扩展知识的好方法-如果您花时间查看函数的底层代码。这件可能有点过火,但这是很多其他物品的好来源。此外,这是一个很好的假设,即该库编写良好且高效。如果一个函数还没有移植到ML fn名称空间,那么我很有信心使用functx函数。functx库也只是在做一个
div xs:dayTimeDuration(“PT1M”)
。伟大的图书馆,但对于这样一个简单的任务来说可能有点过分了是 啊我知道-但这是一个很好的图书馆,知道它是可用的。并不是每项任务都那么简单。另外,图书馆的文档非常好,这是一个很好的方式来了解事情是如何完成的。扩展知识的好方法-如果您花时间查看函数的底层代码。这件可能有点过火,但这是很多其他物品的好来源。此外,这是一个很好的假设,即该库编写良好且高效。如果一个函数还没有被移植到ML-fn名称空间,那么我会很自信地使用functx。