Cómo hacer una búsqueda por intervalo de fechas

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(); 
Logotipo de Adobe

Inicia sesión en tu cuenta