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();
Fazer logon em sua conta