使用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 ...