使用XPATH在CQ中的日期范围比较
问题描述:
我正在使用以下查询来获取基于CQ中最后修改日期的节点。使用XPATH在CQ中的日期范围比较
/jcr:root/content/scaffoldes/properties//*[@jcr:primaryType = 'nt:unstructured' and (@sling:resourceType = 'acme/components/content/scaffoldItem' or @sling:resourceType = 'acme-core/components/data/property') and @jcr:content/cq:lastModified >= xs:dateTime('2000-01-01T00:00:00.000-08:00') and @jcr:content/cq:lastModified < xs:dateTime('2014-12-31T00:00:00.000-08:00') and not(@isHidden)] order by @jcr:score
我们已经使用
http://localhost:4502/crx/explorer/ui/search.jsp
为了测试这个查询。但是,即使在给出一个巨大的日期范围(2000年至2016年)之后,这个查询仍然没有返回。
但是,如果我们删除日期范围部分,则此查询将返回节点。
任何改正这一点的指针都会有帮助。
感谢和问候, 圣
注意
日期字符串创建与下面的代码:
Calendar cal = Calendar.getInstance();
cal.setTime(start);
String startDate = ValueFactoryImpl.getInstance().createValue(cal).getString();
答
对不起任何混乱造成的。我发现我试图查询的节点没有cq:lastModified属性。因此修改了查询以在条件中包含cq:lastReplicated。
... and ((@jcr:content/cq:lastModified >= xs:dateTime('2000-01-01T00:00:00.000-08:00') and @jcr:content/cq:lastModified < xs:dateTime('2016-02-11T15:52:57.090-08:00')) or (@jcr:content/cq:lastReplicated >= xs:dateTime('2000-01-01T00:00:00.000-08:00') and @jcr:content/cq:lastReplicated < xs:dateTime('2016-02-11T15:52:57.090-08:00'))) and ...