| 12 Types de colonnes
 Manuel de Référence MySQL 4.1 : Version Française
 
 . Introduction aux types de colonnes
 . Types numériques
 ->Les types date et heure
 . Les types chaînes
 . Capacités des colonnes
 . Choisir le bon type de colonne
 . Utilisation des types de données issues d'autres SGBDR
 
 
 | 
  12.3 Les types date et heure   
 
Les types dates et heures sont  
DATETIME
 ,  
DATE
 ,
 
TIMESTAMP
 ,  
TIME
 , et  
YEAR
 . Chacun d'eux à une échelle 
de valeurs légales, de même que la valeur ``zéro'' quand vous spécifiez
une valeur illégale. A noter que MySQL vous permet d'enregistrer certaines dates
qui ne sont pas strictement légales, par exemple  
1999-11-31
 .
La raison est que nous pensons que la vérification des dates est à faire 
niveau application.  Pour accélérer les tests, MySQL vérifie juste que le mois
est entre 0 et 12 et que le jour est entre 0 et 31. Les intervalles précédentes 
sont définies de cette façon car MySQL vous permet d'enregistrer dans une colonne
 
DATE
  ou  
DATETIME
 , des dates où le jour de la semaine ou le jour du mois
est zéro. C'est extrêmement utile pour les applications où vous avez besoin d'enregistrer
une date d'anniversaire pour laquelle vous n'avez pas la date exacte. Dans ce cas, vous
enregistrez simplement la date comme  
1999-00-00
  ou  
1999-01-00
 . (Vous ne devez pas
vous attendre à obtenir de valeurs correctes de fonctions tel que  
DATE_SUB()
  ou  
DATE_ADD
 
pour des dates comme cela.)
Voici quelques considérations à garder à l'esprit quand vous manipulerez ce type 
de champs : 
MySQL extrait les valeurs d'un champ date ou heure dans un format standard, 
mais essaye d'interpréter une grande variétés de format pour les valeurs 
que vous donnez (par exemple, quand vous essayez de comparer ou attribuer 
une valeur à un champ de type date ou heure).
Néanmoins, seul les formats décrits dans les sections suivantes sont 
disponibles. Il est attendu que vous fournissiez des valeurs légales et 
des erreurs imprévues peuvent survenir si vous utilisez d'autre formats.
Même si MySQL essaye d'interpreter les valeurs sous différents formats, il 
s'attend toujours à ce que l'année soit dans la partie gauche de la valeur.
Les dates doivent êtres données sous la forme année-mois-jour (exemple : 
 
98-09-04
 ), au lieu de mois-jour-année ou jour-mois-année qui sont 
très utilisés ailleurs (comme  
09-04-98
  ou  
'04-09-98'
 ).
Les dates représentées par deux chiffres pour les années sont ambigues, car 
le siècle n'est pas connu. MySQL interprète les années sur deux chiffres suivant
les règles suivantes : 
Si l'année est dans l'intervalle  
00-69
 , elle est convertie en  
2000-2069
 .
Si l'année est dans l'intervalle  
70-99
 , elle est convertie en  
1970-1999
 .
MySQL convertit automatiquement une date ou heure en nombre si la valeur est 
utilisée dans un contexte numérique et vice versa.
Lorsque MySQL rencontre une valeur hors d'intervalle pour un type date ou heure
qui est donc illégale pour ce type (voir le début de cette section), il la convertit 
à la valeur ``zéro'' de ce type.
(L'exception est que les valeurs hors intervalles pour les champs  
TIME
  
sont coupées à la limite appropriée des valeurs de  
TIME
 .) Le tableau suivant
présente le format de la valeur ``zéro'' de chaque type : 
| Column type | valeur du ``zéro'' |  
| DATETIME | '0000-00-00 00:00:00' |  
| DATE | '0000-00-00' |  
| TIMESTAMP | 00000000000000
 (la longueur dépend de la taille de l'affichage) |  
| TIME | '00:00:00' |  
| YEAR | 0000 | 
La valeur ``zéro'' est spéciale, mais vous pouvez l'enregistrer ou vous y référer 
explicitement en utilisant les valeurs contenues dans le tableau ci dessus.
Vous pouvez aussi le faire en utilisant la valeur  
'0'
  ou  
0
 
qui est plus facile à manipuler.
La date ou le temps ``Zéro'' utilisé avec  
MyODBC
  est automatiquement 
convertie en  
NULL
  à partir de la version 2.50.12 de  
MyODBC
 , 
car ODBC ne peut manipuler de telles valeurs.
 Sommaire : |