Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como salvar datas futuras (!) em um banco de dados


Primeiro, já escrevi sobre isso em detalhes antes, então leia minhas respostas aqui e aqui , bem como esta postagem do blog de Lau Taarnskov .

Com relação especificamente ao MySQL, você geralmente não deseja usar um TIMESTAMP campo para a hora local de um evento futuro, pois ele converterá do fuso horário da sessão para UTC no momento da gravação e converterá novamente do UTC para o fuso horário da sessão no momento da leitura. Mesmo que sejam os mesmos IDs de fuso horário (o que não precisa ser), não há garantia de que os dados de fuso horário não serão alterados para um ou ambos os fusos horários entre quando você grava os dados e quando o evento acontece em.

Em vez disso, use um DATETIME campo, que não faz conversões implícitas de fuso horário. Você obtém o valor exato que você escreveu. Armazene a hora local do evento e armazene um VARCHAR campo que contém o identificador de fuso horário para o evento. Essa é a única maneira de manter a intenção original do usuário.

A lógica e os casos extremos são descritos nas respostas que dei anteriormente.