在最后修改的属性上使用cts:element-range-query以及如何在XQuery中绑定外部变量时,结果不正确

时间:2014-05-14 14:26:10

标签: marklogic

我正在创建一个AdhocQuery: session.newAdhocQuery(“cts:search(fn:collection(),cts:properties-query(cts:element-range-query(xs:QName(\”prop: last-modified \“),\”< \“,current-dateTime() - xs:dayTimeDuration(\”P1D \“))))”);

current-dateTime的值:2014-05-15T20:27:34.468 + 05:30

返回的结果仍然是最后修改日期小于当前日期时间。 以下是一些示例结果:

/content/1878818.doc 2014-05-12T19:59:16 + 05:30

/content/1878965.doc 2014-05-12T19:59:16 + 05:30

/content/1878105.doc 2014-05-12T19:55:48 + 05:30

还有一件事而不是current-dateTime()如何在XQuery中使用其他一些dateTime。

谢谢,

Poonam

1 个答案:

答案 0 :(得分:2)

您的查询将返回“过去最多一天”的文档,其中包含您在结果中看到的值,因为它们都出现在xs:dateTime('2014-05-14T20:27:34.468+05:30')之前。

要创建xs:dateTime值,您可以将字符串转换为dateTime:xs:dateTime('2014-05-12T19:59:16+05:30')或使用特殊的2参数构造函数:fn:dateTime($arg1 as xs:date?, $arg2 as xs:time?)。规范中有许多辅助函数用于处理日期和时间值(请参阅http://www.w3.org/TR/xpath-functions/)。 MarkLogic还有一个名为xdmp:parse-dateTime的内置辅助函数,可以简化这一过程。