Maison  >  Article  >  base de données  >  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
PHPzavant
2023-09-06 20:25:021390parcourir

为什么在 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)

    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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer