Estou usando o sistema Ubuntu de 64 bits.
Atualmente, estou trabalhando em um projeto que incorpora o MariaDB. Estou planejando introduzir a técnica de registro de data e hora no projeto para que as pessoas recebam a hora correta para diferentes fusos horários.
Ouvi e li alguns artigos sobre o problema do ano 2038 para o registro de data e hora. Muitos artigos sugerem que usamos um sistema de 64 bits para comprar um pouco mais de tempo.
A quanto tempo esse "bit" se refere? É tempo suficiente para podermos gerenciar aplicativos da web até o final? Se não for esse o caso, é como uma extensão de apenas dois anos e, quando chegar o ano 2040, teremos aplicativos que não funcionarão adequadamente?
time_t
números inteiros de 64 bits fornecerão um pouco mais de tempo - até 15:30:08 no domingo, 4 de dezembro, 292.277.026.596. A esperança é o tempo suficiente para a sua aplicação;)Respostas:
Bem, se houver uma opção para literalmente comprar um "bit", ou seja, transferir de um número inteiro de 32 bits assinado para um número inteiro de 32 bits não assinado, as coisas continuam funcionando no 2106.
Transferir para 64 bits é "um pouco melhor". Você tem centenas de bilhões de anos de resolução.
E o Ubuntu faz isso:
No entanto, esse é o nível do sistema operacional. Só porque o Ubuntu usa um número inteiro de 64 bits para seus tempos não significa que o MySQL / MariaDB o usará para armazenar seus registros de data e hora. Se as datas anteriores a 2038 forem importantes para o seu agora, comece o teste imediatamente.
Na verdade, posso poupar algum tempo. Ainda está quebrado. Esse bug foi relatado há mais de uma década, mas seu teste principal ainda falha com um int de 64 bits.
Isso nem é armazenamento. É um pouco patético.
(E sim, isso foi executado no MariaDB, versão 10.1)
fonte
Não o armazene como um número inteiro. Armazene-o como uma string de data formatada ISO 8601 . Este é o formato padrão usado na Internet.
fonte