Erro de leitura de data - MySQL
-
Boa tarde, dia e noite.
Estou trabalhando em um projeto cujo banco de dados é MySQL 5.6. Contudo, toda vez que eu busco na tabela alguma data, o valor apresentado no componente fica um dia atrasado. Ex.:
DATA_BANCO: 2023-03-27
DATA_COMPONENTE: 26/03/2023Alguém pode me dizer se há algum recurso além dos fluxos?
-
@joaoquaresma Amigo, tenta alterar o campo para DATA e HORA pra você avaliar o comportamento se ele volta 1 dia mesmo ou algumas horas? Acho que o seu problema seja com o timezone. Nao me lembro ao certo, mas ja vi pessoas com esse problema no MYSQL.
Dá uma olhada nesses topicos aqui veja se ajuda:
https://forum.softwell.com.br/topic/30644/horário-de-verão-no-mysql?_=1681241034614 -
Bom dia.
Vou descrever um exemplo: Estou realizando a montagem de um componente grade que é alimentado por um formulário associado com a tabela "vendas". Na tabela "vendas" eu possuo as colunas "cliente", "valor" e "data_compra". Essa tabela é alimentada por outra aplicação em C. Quando a tabela recebe uma nova informação, "312", "120.00" e "2023-04-14" a grade atualiza e mostra esses valores da seguinte forma: Cliente: 312, Valor: R$120,00 e Data da Compra: 13/04/2023.
Essa data, independente de qual seja sempre está sendo apresentado, tanto na grade, quanto no componente que armazena ele no formulário que alimenta a grade, com um dia a menos.
Estou utilizando o MySQL server 5.6, contudo o 5.7 também está com o mesmo erro. O mesmo não ocorre em PostgreSQL. -
@joaoquaresma Ainda acredito que possa ser problema com o timezone. Faz um teste, cria um formulario novo e uma tabela com campo data e hora.
E observa como vão ficar os resultados no banco depois de manipular pelo formulário. Eu acredito que se você colocar via fomulario uma data 26/03/2023 00:00:00. Vai aparecer depois de alterar: 25/03/2023 23:00:00 por exemplo. Se esse for o comportamento é problema no timezone.
Um abraço.
-
Boa tarde, tive este problema também.
Se você verificar, cada vez que você edita um registro e grava, os campos data do registro voltam 01 dia.
Minha TimeZone já estava configurada.
Só consegui resolver alterando os campos data para datetime
Nas consultas, para não filtrar por datetime utilizei Date(campo), com isto filtra somente a data, ignorando a hora.
Atualizei para o maker5, no Maker5 este erro não ocorre nos bancos MySQL.
O Maker5 está homologado para MySQL 8.0, achei o banco bem mais rápido. -
Resolvido!
Quando vou declarar uma SQL para o preenchimento da minha grade, os campos onde são datas, soma-se mais 0.
Exemplo: Tabela: cadastro_de_ funcionario; Campo: aniversário; Valor: 1999-10-26.
Como era:
SELECT aniversario
FROM cadastro_de_funcionario
Retorno: 25/10/1999Como está:
SELECT Date_Format(aniversario + Interval 0 Day, '%d/%m/%Y') As data_aniversario
FROM cadastro_de_funcionario
Retorno: 26/10/1999