Pregunta
Su aplicación puede requerir una búsqueda basada en intervalos de fechas, por ejemplo, buscar todos los nodos que se han creado en los últimos 3 días.
¿Cómo es posible hacer una búsqueda por intervalo de fechas?
Respuesta
CRX ofrece la posibilidad de expresar intervalos de fechas usando la asignación xs:dateTime
. El siguiente ejemplo muestra cómo buscar nodos en /content/mypage
que se hayan creado entre el 24/4/2009 y el 28/04/2009:
/jcr:root/content/mypage//*[@jcr:created >= xs:dateTime('2009-04-24T00:00:00.000+02:00') and @jcr:created < xs:dateTime('2009-04-28T00:00:00.000+02:00')]
El motor de búsqueda de Lucene indexa la fecha real en milisegundos, por eso es necesario la asignación utilizando la función xs:dateTime
en la búsqueda por intervalo de fechas. La cadena formateada que se pasa a esta función debe obtenerse como se muestra en el siguiente extracto de código:
// obtener javax.jcr.jcr.ValueFactory de la sesión de JCR ValueFactory = session.getValueFactory(); // obtener el objeto Calendario Calendar cal = Calendar.getInstance(); // crear javax.jcr.Value objeto de PropertyType.DATE Value dateValue = factory.createValue(cal); // por último, obtener una representación de cadena de valor de la fecha que se pueda utilizar en xs:dateTime function String dateString = dateValue.getString();
Inicia sesión en tu cuenta