Hi Jakub,

JSR-170 specifies a type mapping from property types to types known in XPath. The relevant section in the spec is: 6.6.4.4

regarding your queries:

> "//*[jcr:contains(@myDateProperty, '2005')]"

jcr:contains relies on the fulltext index, which is only required by jsr-170 on a per node basis. still, jackrabbit supports fulltext queries with a property scope. the reason why the above query does not return results is, that jackrabbit does not fulltext index date properties. and I think it is ok, that jackrabbit doesn't do that. your query would be certainly convenient to find all dates of the year 2005, but that's probably the only useful use case. when it comes to month and day a fulltext index would be unable to distinguish them. both are just two digit numbers.

> "//*[jcr:like(@myDateProperty, '2005-%')]"

this query does not return nodes because jcr:like only works on string properties and @myDateProperty is of type date.

what will work is the following:

//[EMAIL PROTECTED] >= xs:dateTime('2005-01-01T00:00:00.000TZ') and @myDateProperty <= xs:dateTime('2005-12-31T23:59:59.999TZ')]

you may also omit the xs:dateTime functions because jackrabbit does some basic value coercing, which includes string to date conversion:

//[EMAIL PROTECTED] >= '2005-01-01T00:00:00.000TZ' and @myDateProperty <= '2005-12-31T23:59:59.999TZ']

regards
 marcel


[EMAIL PROTECTED] wrote:
Hi!

I've been playing with Jackrabbit for some time and I'm having problems with searching by properties with a date value (java.util.Calendar). I'm trying to define a constraint to find only the nodes, let's say from the year 2005.
So I'm trying to perform XPath queries like
"//*[jcr:contains(@myDateProperty, '2005')]" or
"//*[jcr:like(@myDateProperty, '2005-%')]"

But that doesn't work - each time a set of found nodes is empty.
Does anyone know how to perform that kind of searching?
Any help would be highly appreciated.

Best regards
Jakub


Reply via email to