Pergunta

Uma tabela possui coluna de data e hora. Um valor de amostra pode ser 2010-03-30 13:42:42. Com o Hibernate, estou fazendo uma restrição de consulta de alcance.

O mapeamento de hibernato para esta coluna é o seguinte.

<property name="orderTimestamp"  column="order_timestamp" type="java.util.Date" />

Digamos, quero descobrir todos os registros que têm a data de 30 de março de 2010 e 31 de março de 2010. Uma consulta de intervalo neste campo é feita da seguinte forma.

Date fromDate = new SimpleDateFormat("yyyy-MM-dd").parse("2010-03-30");
Date toDate = new SimpleDateFormat("yyyy-MM-dd").parse("2008-03-31");
Expression.between("orderTimestamp", fromDate, toDate);

Isso não funciona.

A consulta é convertida para os respectivos registros de data e hora como "2010-03-30 00:00:00" e "2010-03-31 00:00:00". Portanto, todos os registros para 31 de março de 2010 são ignorados.

Uma solução simples para esse problema pode ser ter a data final como "2010-03-31 23:59:59". Mas gostaria de saber se existe uma maneira de corresponder apenas a data da parte da coluna de data e hora.

Também é Expression.between() inclusive de ambos os limites? A documentação não lança nenhuma luz sobre isso.

Nenhuma solução correta

Outras dicas

Aqui está a sua fórmula:

= valor (médio ([SEUFIELD]; 6; 4)) - mod (valor (médio (mid ([seu campo]; 6; 4)); 10) +10

(não precisa ter 2 colunas calculadas; apenas um fará)

"2010-03-31 23:59:59". A condição de fronteira é potencialmente perigosa: se houve uma transação no sistema entre 23:59:59 e 00:00:00, você sentiria falta. Se você tiver transações suficientes diariamente e um período longo, um relatório vai quebrar e você passará horas para descobrir o porquê.

PostGresql between inclui os limites Portanto, nem seria seguro definir a data final para 2010-04-01 00:00:00. Use LT () e GT () para ter certeza.

Talvez você possa lançar OrderTimestamp para uma data. HQL tem apoio por esta.

Use o elenco (your_data, data), lembre -se do segundo arg da função de elenco deve ser menor ou não funcionará.

Att.: Samuel Maycon

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top