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(); 

Esta obra está autorizada con arreglo a la licencia de Reconocimiento-NoComercial-CompartirIgual 3.0 Unported de Creative Commons.  Los términos de Creative Commons no cubren las publicaciones en Twitter™ y Facebook.

Avisos legales   |   Política de privacidad en línea