Maison > base de données > tutoriel mysql > Quelles sont les causes, les conséquences et les solutions au problème de l'an 2038 ?

Quelles sont les causes, les conséquences et les solutions au problème de l'an 2038 ?

Linda Hamilton
Libérer: 2024-12-10 02:42:09
original
591 Les gens l'ont consulté

What are the causes, consequences, and solutions for the Year 2038 problem?

Bogue de l'an 2038 : comprendre le problème et les solutions disponibles

Le problème de l'an 2038 découle de l'utilisation généralisée d'entiers 32 bits signés pour représente l'heure du système, avec l'origine définie comme le 1er janvier 1970. Lorsque le nombre de secondes depuis cette époque dépasse la valeur maximale d'un entier de 32 bits, ces systèmes seront confrontés à un défi de taille.

Occurrence et impact

Le mardi 19 janvier 2038 à 03:14:07 UTC, l'entier de 32 bits représentant le temps débordera, ce qui amènera les systèmes à l'interpréter comme un nombre négatif. Cela entraînera le stockage des dates et heures sous forme de valeurs correspondant au 13 décembre 1901.

Stratégies d'atténuation

Pour résoudre ce problème, plusieurs approches sont disponibles :

  • Utiliser des types de données 64 bits : Implémentation de types de données longs pour le stockage les dates et les heures garantissent suffisamment de place pour les extensions futures.
  • Alternatives MySQL/MariaDB : Pour les applications non critiques en termes de temps, utilisez le type de colonne DATE. Pour une plus grande précision, utilisez DATETIME au lieu de TIMESTAMP.
  • Mise à niveau MySQL : Mettez à niveau vers MySQL 8.0.28 ou version ultérieure, car elle inclut des modifications pour gérer les dates au-delà de l'année 2038.

Alternatives à l'année 2038-Prone Types

Envisagez d'utiliser des types de données volumineux autant que possible pour le stockage de la base de données. Exemples :

  • Dans GNU C et POSIX/SUS, utilisez le type long long.
  • En PHP, utilisez sprintf('%u'...) ou l'extension BCmath .

Applications héritées

Modification des applications héritées qui utilisent TIMESTAMP nécessite un examen attentif. Envisagez plutôt d'utiliser DATETIME, car il gère une plage de dates plus large.

Pour convertir un champ TIMESTAMP existant en DATETIME, suivez ces étapes :

  1. Créez une colonne temporaire pour stocker le champ existant. Données TIMESTAMP.
  2. Ajoutez une nouvelle colonne DATETIME avec le même nom que le TIMESTAMP d'origine
  3. Mettez à jour la nouvelle colonne DATETIME en utilisant les données de la colonne temporaire.
  4. Supprimez la colonne temporaire.

Ressources pour plus d'informations

  • Problème de l'année 2038 (Wikipédia) : https://en.wikipedia.org/wiki/Year_2038_problem
  • Internet prendra fin dans 30 ans : https://spectrum.ieee.org/tech-talk/telecom/internet/the-internet-will -fin dans 30 ans

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal