2016-02-11 76 views
0

我正在使用以下查詢來獲取基於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(); 

回答

0

對不起任何混亂造成的。我發現我試圖查詢的節點沒有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 ...