gpt4 book ai didi

Marklogic 中的 Xquery 返回距当前日期不到 1 个月的日期时间

转载 作者:行者123 更新时间:2023-12-04 07:29:07 25 4
gpt4 key购买 nike

Delete documents less than 30 days in Marklogic Xquery
我在互联网上搜索以查找如何返回从当前日期起不到 1 个月的文档,我找到了上面的链接。由于我使用的元素没有范围索引

let $currentdt := fn:current-dateTime()
let $amonthAgo := $currentdt- xs:yearMonthDuration("P1M")
cts:search(doc(),
cts:element-query(xs:QName("myDateTimeField"), cts:true-query())
)[.//myDateTimeField[xs:dateTime(.) eq $amonthAgo]]
什么都不返回。

我有样本值,例如
2021-05-18T06:32:34.761729-04:00
2021-05-15T06:32:34.761729-04:00
2021-03-19T06:32:34.761729-04:00
2021-06-15T06:32:34.761729-04:00
蒂亚!

最佳答案

除了丢失的 return对于 FLWOR 表达式,您要求所有刚好一个月的匹配项,因为您使用的是 eq在比较中。如果您想查找小于 1 个月的文档,您希望它们的日期正好在 1 个月前的时间点之后(即 $amonthAgo)。您可以将谓词更正并简化为 xs:dateTime(myDateTimeField) gt $amonthAgo .这是一个对我有用的独立示例:

declare context item := document {
<doc>
<e id="1">
<myDateTimeField>2021-05-18T06:32:34.761729-04:00</myDateTimeField>
</e>
<e id="2">
<myDateTimeField>2021-05-15T06:32:34.761729-04:00</myDateTimeField>
</e>
<e id="3">
<myDateTimeField>2021-03-19T06:32:34.761729-04:00</myDateTimeField>
</e>
<e id="4">
<myDateTimeField>2021-06-15T06:32:34.761729-04:00</myDateTimeField>
</e>
</doc>
};
let $currentdt := fn:current-dateTime()
let $amonthAgo := $currentdt - xs:yearMonthDuration("P1M")
return //e[xs:dateTime(myDateTimeField) gt $amonthAgo]
结果(2021-06-19):
<e id="4">
<myDateTimeField>2021-06-15T06:32:34.761729-04:00</myDateTimeField>
</e>

关于Marklogic 中的 Xquery 返回距当前日期不到 1 个月的日期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68046425/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com