[+/-]
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.
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.