[+/-]
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
.
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.