| Les types
DATETIME, DATE, et TIMESTAMP sont liés.
Cette section décrit leurs caractéristiques,
leur similarités et leurs différences.
Le type DATETIME est prévu
lorsque vous souhaitez stocker une
date et une heure. MySQL affiche les
valeurs de type DATETIME au format
‘AAAA-MM-JJ HH:MM:SS’.
L'intervalle de validité va
de ‘1000-01-01 00:00:00’
à ‘9999-12-31 23:59:59’.
(``validité'' signifie que
même si d'autres valeurs plus
anciennes peuvent être manipulées,
il n'est pas garantit qu'elles le
seront).
Le type DATE est prévu lorsque
vous souhaitez stocker une date. MySQL
affiche les valeurs de type DATE au
format ‘AAAA-MM-JJ’. L'intervalle
de validité va de '1000-01-01'
à '9999-12-31'.
La colonne TIMESTAMP a vu ses propriétés
et comportements évoluer avec
les versions de MySQL et le mode SQL
du serveur.
Vous pouvez spécifier les
valeurs des colonnes DATETIME, DATE
et TIMESTAMP, avec les formats communs
suivants :
Une chaîne au format 'AAAA-MM-JJ
HH:MM:SS' ou 'AA-MM-JJ HH:MM:SS'.
Une syntaxe plus souple est permise
: tout caractère de ponctuation
peut être utilisé comme
délimiteur entre les parties
de temps ou heure. Par exemple, '98-12-31
11:30:45', '98.12.31 11+30+45', '98/12/31
11*30*45', et '98@12@31 11^30^45'
sont équivalents.
Une chaîne au format ‘AAAA-MM-JJ’
ou ‘AA-MM-JJ’. Une syntaxe
plus flexible est aussi acceptée
ici. Par exemple, ‘98-12-31’,
‘98.12.31’, ‘98/12/31’,
et ‘98@12@31’ sont équivalent.
Une chaîne sans aucun délimiteurs
sous la forme ‘AAAAMMJJHHMMSS’
ou ‘AAMMJJHHMMSS’, en
supposant qu'une telle chaîne
ait un sens en terme de date. Par
exemple ‘19970523091528’
et ‘970523091528’ sont
interprétés comme ‘1997-05-23
09:15:28’, mais ‘971122129015’
est invalide (les minutes ne sont
pas valides) et devient alors '0000-00-00
00:00:00'.
Une chaîne sans aucun délimiteurs
sous la forme ‘AAAAMMJJ’
ou ‘AAMMJJ’, en supposant
qu'une telle chaîne ait un sens
en terme de date. Par exemple, ‘19970523’
et ‘970523’ sont interprétés
comme ‘1997-05-23’, mais
‘971332’ est invalide
(les mois ne sont pas valides) et
devient alors ‘0000-00-00’.
Un nombre au format AAAAMMJJHHMMSS
ou AAMMJJHHMMSS, en supposant qu'un
tel nombre ait un sens en terme de
date. Par exemple, 19830905132800
et 830905132800 sont interprétés
comme ‘1983-09-05 13:28:00’.
Un nombre au format AAAAMMJJ ou AAMMJJ
en supposant qu'un tel nombre ait
un sens en terme de date. Par exemple,
19830905 et 830905 sont interprétés
comme ‘1983-09-05’.
Un résultat de fonction qui
retourne une valeur acceptable dans
une colonne de type DATETIME, DATE,
ou TIMESTAMP, tels que NOW() ou CURRENT_DATE.
Les valeurs invalides DATETIME, DATE,
ou TIMESTAMP sont remplacées
par la date ``zéro'' du type
approprié (respectivement ‘0000-00-00
00:00:00’, ‘0000-00-00’,
ou 00000000000000).
Pour la valeurs spécifiées
sous forme de chaînes avec des
délimiteurs de date, il n'est
pas nécessaire de spécifier
les deux chiffres pour les mois ou
les dates qui sont inférieurs
à 10. Par exemple, ‘1979-6-9’
est valide et est équivalent
à ‘1979-06-09’.
Similairement, pour les valeurs spécifiées
sous forme de chaîne avec des
délimiteurs d'heure, il n'est
pas obligatoire de spécifier
les deux chiffres des heures, minutes
et secondes qui sont inférieures
à 10. ‘1979-10-30 1:2:3’
est valide et est équivalent
à '1979-10-30 01:02:03'.
Les valeurs spécifiées
sous forme de nombres doivent avoir
6, 8, 12, ou 14 chiffres de long.
Si le nombre a 8 ou 14 chiffres, MySQL
suppose que le format est AAAAMMJJ
ou AAAAMMJJHHMMSS (respectivement)
et que l'année est représentées
par les 4 premiers chiffres. Si le
nombre a 6 ou 12 chiffres, MySQL suppose
que le format est AAMMJJ ou AAMMJJHHMMSS
(respectivement) et format et que
l'année est représentées
par les 2 premiers chiffres. Les nombres
qui ne sont pas d'une taille valide,
sont complétés avec
des 0 jusqu'à la taille lisible
la plus proche.
Les valeurs spécifiées
sous forme de chaînes sans délimiteurs
sont interprétés en
fonction de leur taille. Si la chaîne
à 8 ou 14 caractères
de long, l'année est supposée
avoir 4 chiffres. Sinon, l'année
est supposée avoir 2 chiffres.
La chaîne est interprétée
de gauche à droite, en lisant
successivement l'année, le
mois, la date, l'heure, les minutes
et les secondes, tant qu'il y a des
valeurs dans la chaîne. Cela
signifie que vous ne devez pas utiliser
de chaînes qui ont moins de
6 caractères. Par exemple,
si vous spécifiez ‘9903’,
en pensant qu'il représente
Mars 1999, vous vous apercevrez que
MySQL insère à la place
la date ``zéro'' dans votre
table. Cela est dû au fait que
si l'année et le mois sont
99 et 03, la date est 0, ce qui en
fait une date invalide, qui est rejetée
par MySQL.
Dans une certaines mesure, vous pouvez
assigner des valeurs d'une colonne
à une autre colonne d'un autre
type. Cependant, vous devez vous attendre
à quelques altération
ou pertes de valeurs durant la conversion
:
Si vous assignez une valeur DATE
à une colonne de type DATETIME
ou TIMESTAMP, la partie représentant
les heures vaudra ‘00:00:00’,
car les colonnes de type DATE ne contiennent
pas d'information d'heure.
Si vous assignez une valeur DATETIME
ou TIMESTAMP à une colonne
de type DATE, la composante heure
sera perdue, car les colonnes de type
DATE ne contiennent pas d'information
d'heure.
N'oubliez pas que même si les
valeurs DATETIME, DATE, et TIMESTAMP
peuvent être spécifiée
avec différents formats, ces
types n'ont pas les mêmes intervalle
de validité. Par exemple, les
valeurs de type TIMESTAMP ne peuvent
pas prendre de valeur antérieure
à 1970 ou postérieure
à 2037. Cela signifie qu'une
date telle que ‘1968-01-01’,
est légale dans les colonnes
de type DATETIME, mais n'est pas valide
pour les TIMESTAMP, et sera convertie
en date zéro (0) si elle est
assignée à une telle
colonne.
Attention à certains pièges
concernant les spécifications
de dates :
La syntaxe à délimiteur
libre peut être une source de
problème. Par exemple, une
valeur telle que ‘10:11:12’
ressemble à une heure, à
cause du délimiteur `‘:’',
mais avec une colonne de date, elle
sera interprétée comme
la date ‘2010-11-12’.
La valeur ‘10:45:15’ sera
convertie en ‘0000-00-00’
car ‘45’ n'est pas un
mois valide.
Le serveur MySQL effectue seulement
la vérification de base la validité
d'une date : jours 00-31, mois 00-12,
années 1000-9999. N'importe quelle
date qui n'est pas dans cette marge
retournera 0000-00-00. Veuillez noter
que ceci vous permet toujours de stocker
les dates inadmissibles telles que 2002-04-31.
Il permet à des applications
web de stocker des données d'une
forme sans vérifier plus loin.
Pour s'assurer qu'une date est valide,
vous devrez effectuer un test dans votre
application.
Les années spécifiée
avec deux chiffres seulement sont ambiguÏs,
car il manque le siècle. MySQL
interprète les années
à deux chiffres suivant ces règles
:
Les années de l'intervalle 00-69
sont converties en 2000-2069.
Les années de l'intervalle 70-99
sont converties en 1970-1999.
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.
|