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 :
|