J'utilise un système Ubuntu 64 bits.
Je travaille actuellement sur un projet qui intègre MariaDB. Je prévois d'introduire une technique d'horodatage dans le projet afin que les gens reçoivent l'heure correcte pour différents fuseaux horaires.
J'ai entendu et lu quelques articles sur le problème de l'année 2038 pour l'horodatage. De nombreux articles suggèrent que nous utilisons un système 64 bits pour gagner un peu plus de temps.
À combien de temps ce «bit» fait-il référence? Est-il assez long pour que nous puissions gérer les applications Web jusqu'à la fin? Si ce n'est pas le cas, est-ce comme une prolongation de seulement deux ans, alors quand l'année 2040 arrivera, allons-nous avoir des applications qui ne fonctionnent pas correctement?
time_t
entiers 64 bits vous donneront un peu plus de temps - jusqu'à 15h30:08 le dimanche 4 décembre 292 277 026 596. J'espère que c'est assez long pour votre candidature;)Réponses:
Eh bien, s'il existe une option pour acheter littéralement un "bit", c'est-à-dire le transfert d'un entier 32 bits signé vers un entier 32 bits non signé, les choses continuent de fonctionner en 2106.
Le transfert en 64 bits est "un peu mieux". Vous obtenez des centaines de milliards d'années de résolution.
Et Ubuntu fait ceci:
Cependant, c'est le niveau du système d'exploitation. Ce n'est pas parce qu'Ubuntu utilise un entier 64 bits pour son temps que MySQL / MariaDB l'utilisera pour stocker ses horodatages. Si les dates après 2038 sont importantes pour vous maintenant, commencez immédiatement les tests.
En fait, je peux vous faire gagner du temps. C'est encore cassé. Ce bogue a été signalé il y a plus de dix ans, mais son test principal échoue toujours avec un int 64 bits.
Ce n'est même pas du stockage. C'est un peu pathétique.
(Et oui, cela a été exécuté sur MariaDB, version 10.1)
la source
Ne le stockez pas du tout comme un entier. Stockez-le en tant que chaîne de date au format ISO 8601 . Il s'agit du format standard utilisé sur Internet.
la source