Data gravada no MysQL grava com um dia a menos de diferença?

13 respostas
G

Pessoal bom dia!

Estou com um problema de um livro que estou estudando de uma aplicação web usando jsf e hibernate.

Para resumir a aplicação funciona corretamente, que é gravar alguns dados do formulário jsf para o banco de dados mysql:
Nome, email, data nascimento, celular, login e senha…
O problema é que ao gravar no banco, o que acontece, por exemplo quando digito 10/01/2011 ele grava 09/01/2011!!!
Está, gravando com diferença de um dia a menos do que digitei…

Alguém já teve este problema ou pode me ajudar?

13 Respostas

E

Olá, bom dia.

Já tive um problema parecido, mas debugando, percebi que quem mandava a data com um dia a menos (D-1) era o componente de data do ICEFaces. Você esta usando JSF com qual implementação? RichFaces, ICEFaces ou PrimeFaces?

Abraços!
:slight_smile:

A

Já tive este problema uma vez, e era relacionado ao Locale da aplicação. O Locale está relacionado ao time zone (fuso) configurado , se o seu dado na coluna do banco está configurado como TIMESTAMP ou DATETIME, ele leva em consideração a hora também. Se a o banco estiver configurado com um timezone diferente, ele tenta converter o horário e pode ser que a data mude. Verifique as configurações de Locale da sua aplicação (em algumas distribuições de Linux o default é en_US, e o java pega a configuração do sist. operacional)

G

eduardoac:
Olá, bom dia.

Já tive um problema parecido, mas debugando, percebi que quem mandava a data com um dia a menos (D-1) era o componente de data do ICEFaces. Você esta usando JSF com qual implementação? RichFaces, ICEFaces ou PrimeFaces?

Abraços!
:slight_smile:

Olha eu ainda não cheguei na parte destes frameworks, mas ao que parece o livro usará o PrimeFaces…

Abraço.

G

Pesaquisando na NET vi alguma coisa deste tipo… No meu BD o campo está como date, mas como faço para configurar este LOCALE?

L

amigo vc deve estar fazendo uma aplicao web, ne?
entao sua aplicacao esta rodando em um servidor instalado na sua propria maquina certo?
como servidor esta na sua maquina e vc esta fazendo uma consulta no mysql ele pega a data do seu computador…ja verificou a data do seu pc ?

G

levita104:
amigo vc deve estar fazendo uma aplicao web, ne?
entao sua aplicacao esta rodando em um servidor instalado na sua propria maquina certo?
como servidor esta na sua maquina e vc esta fazendo uma consulta no mysql ele pega a data do seu computador…ja verificou a data do seu pc ?

Fala amigão! Boa tarde! Não tinha olhado não, mas acabei de olhar e está ok. A data está correta…

G

Pessoal boa tarde a todos! O problema era realmente no locale e no timezone depois de configurados está gravando corretamente.

Quero agradecer a todos pela ajuda.

Abraços.

E

Por favor, poderia responder se era do banco de dados ou da aplicação?
:slight_smile:

G

Era da aplicação! Creio que por causa do horario de verão ele estava calculando de forma errada e como disse acima apenas acrescenteia a aplicação o locale e o timezone na tag desta forma: <f:convertDateTime type=“date” pattern=“dd/MM/yyyy” dateStyle="medium locale=“pt_BR” timeZone=“GMT-3”/>

Espero que ajude mais alguém.

Abraços.

E

Ótimo, muito bom!
:slight_smile:

F

Eu adoro este forum do GUJ, essa dica ajudou a solucionar o meu problema, valeu!!!

A

Nossa que maravilha, resolveu meu problema , valeu t++++

B

Pra ver como o tempo não deve apagar as postagens antigas. Precisei hoje desta dica e me livrou de um grande problema.

Criado 10 de janeiro de 2011
Ultima resposta 24 de jul. de 2014
Respostas 13
Participantes 7