Maison > base de données > tutoriel mysql > Pourquoi n'est-il pas une bonne pratique d'utiliser des valeurs de date avec des années à deux chiffres dans MySQL ?

Pourquoi n'est-il pas une bonne pratique d'utiliser des valeurs de date avec des années à deux chiffres dans MySQL ?

PHPz
Libérer: 2023-09-06 20:25:02
avant
1412 Les gens l'ont consulté

为什么在 MySQL 中使用两位数年份的日期值不是一个好习惯?

Comme nous le savons tous, YEAR(2) stocke l'année au format à 2 chiffres. Par exemple, nous pouvons écrire 69 pour stocker 1969 comme année. Dans ANNÉE (2), l'année peut être précisée de 1970 à 2069 (70 à 69).

MySQL interprète les valeurs d'année à 2 chiffres à l'aide des règles suivantes -

  • Les valeurs d'année comprises entre 00 et 69 seront converties en 2000-2069.
  • Les valeurs d'année comprises entre 70 et 99 seront converties en 1970-1999.
  • ul>

    Nous ne pouvons pas stocker les valeurs de date au format à 2 chiffres car les valeurs stockées dans ce format deviendront ambiguës en raison d'un siècle inconnu.

    Vous pouvez le comprendre plus clairement à l'aide de l'exemple MySQL suivant -

    mysql> Create Table year_test(val year(2));
    Query OK, 0 rows affected, 1 warning (0.23 sec)
    
    mysql> insert into year_test(val) values('70');
    Query OK, 1 row affected (0.14 sec)
    
    mysql> insert into year_test(val) values('00');
    Query OK, 1 row affected (0.06 sec)
    
    mysql> select * from year_test;
    +-----+
    | val |
    +-----+
    | 70  |
    | 00  |
    +-----+
    2 rows in set (0.00 sec)
    
    mysql> select * from year_test where val = '1970';
    +-----+
    | val |
    +-----+
    | 70  |
    +-----+
    1 row in set (0.03 sec)
    
    mysql> select * from year_test where val = '2000';
    +-----+
    | val |
    +-----+
    | 00  |
    +-----+
    1 row in set (0.00 sec)
    
    mysql> select * from year_test where val = '1900';
    Empty set (0.06 sec)
    Copier après la connexion

    En stockant 00 dans "val", nous ne savons pas à quelle année nous faisons référence, "1900" ou "2000". MySQL interprète cela comme l'année 2000.

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:tutorialspoint.com
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal