Data de consulta com Hibernate na coluna Timestamp em PostgreSQL
-
23-09-2019 - |
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