O meu problema é simples, porém não encontrei em nenhum lugar a solução.
Tem uma tela que recebe uma data, eu faço uma consulta no banco com essa data, porém quando eu imprimo o SQL da consulta na tela, dá uma diferença de um dia.
Ex:
Se eu digitei na página WEB 20/09/2012, quando vai para a minha consulta sai 19/09/2012.
String dataF = new SimpleDateFormat("dd-MM-yyyy").format(data);
ResultSet result = con
.consultar("select * from RDV_Tipo WHERE dataInicial <= '"
+ dataF + "' and dataFinal >= '" + dataF + "'");
Sim, eu concordo com você, mas independente da maneira como eu vou gravar, quando eu quero saber o valor que a variável possui está dando um dia de diferença.
Por exemplo, tem uma outra parte do código que eu exibo uma mensagem para o usuário caso a data digitada não esteja no intervalo correto.
Mensagem.Erro(
"NENHUM RDV FOI ENCONTRADO COM ESSA DATA '"
+ new SimpleDateFormat("dd/MM/yyyy")
.format(despesaLancamento.getData()),
"DIGITE A DATA");
Nesse trecho de código acontece o mesmo erro, se eu digito na Página WEB 20/09/2012, a mensagem que é retornada para o usuário é :
NENHUM RDV FOI ENCONTRADO COM ESSA DATA ‘19/09/2012’
import java.util.Date;
private Date data_desejada;
<h:outputLabel value="Dia de Ocorrência da Omissão" for="diaOcOmss" />
<p:calendar id="diaOcOmss" required="true" effect="explode"
pattern="dd/MM/yyyy"
requiredMessage="Selecione o dia de ocorrência da Omissão."
value="#{omissaoBean.omissao.data_ocor_omissao}" />
Utilizo assim, e não da erro nenhum…
Muito simples, nem precisa de conversão…
Eu já
Isto ocorre por problema de TimeZone e Daylight Saving Time (horário de verão). Dependendo do caso é só configurar o banco de dados e a JVM do servidor com a mesma configuração.