Como fazer uma pesquisa por intervalo de datas

Pergunta

Seu aplicativo pode exigir uma pesquisa com base em intervalos de datas, por exemplo, pesquisar todos os nós que foram criados nos últimos três dias.

Como é possível fazer uma pesquisa por intervalo de datas?

Resposta

O CRX oferece a possibilidade de expressar intervalos de datas usando o mapeamento xs:dateTime. O exemplo a seguir mostra como pesquisar nós abaixo do /content/mypage que foram criados entre 24/04/2009 e 28/04/2009:

/jcr:root/content/mypage//*[@jcr:created >= xs:dateTime('2009-04-24T00:00:00.000+02:00') e @jcr:created < xs:dateTime('2009-04-28T00:00:00.000+02:00')] 

O mecanismo de pesquisa Lucene indexa a data real em milissegundos, e é por isso que o mapeamento usando a função xs:dateTime é necessária na pesquisa por intervalo de datas. A sequência de caracteres formatada passada para essa função deve ser obtida conforme mostrado no seguinte trecho de código:

// obtain javax.jcr.ValueFactory from JCR session ValueFactory factory = session.getValueFactory(); // obtain Calendar object Calendar cal = Calendar.getInstance(); // create javax.jcr.Value object of PropertyType.DATE Value dateValue = factory.createValue(cal); // finally, get string representation of the DATE-value which can be used in xs:dateTime function String dateString = dateValue.getString(); 
Logotipo da Adobe

Fazer logon em sua conta