:: DEVELOPER ZONE
Le format d'une valeur de DATE est 'YYYY-MM-DD'. En accord avec
ANSI SQL, aucun autre format n'est autorisé. Vous devez utiliser ce format dans
les UPDATE et les clauses WHERE des requêtes SELECT. Par
exemple :
mysql> SELECT * FROM nom_de_table WHERE date >= '1997-05-05';
MySQL convertit automatiquement une date en nombre si la date est utilisée dans un
contexte numérique (et vice versa). Il est aussi assez intelligent pour permettre
une forme ``relaxée'' lors des mises à jour et dans les clauses WHERE qui
comparent une date et une colonne TIMESTAMP, DATE, ou DATETIME.
(Forme relaxée signifie que n'importe quel caractère de ponctuation peut être utilisé
en tant que séparateurs des parties. Par exemple, '1998-08-15' et '1998#08#15'
sont équivalents.) MySQL peut convertir une chaîne ne contenant aucun séparateur
(comme '19980815'), en supposant qu'elle a un sens pour une date.
La date spéciale '0000-00-00' peut être stockée et récupérée en tant que
'0000-00-00'. Lors de l'utilisation d'une date '0000-00-00' avec MyODBC,
elle sera automatiquement convertie en NULL à partir de la version 2.50.12 de
MyODBC, car ODBC ne peut gérer ce type de dates.
Puisque MySQL effectue les conversions décrites plus haut, ce qui suit fonctionnera :
mysql> INSERT INTO nom_de_table (idate) VALUES (19970505);
mysql> INSERT INTO nom_de_table (idate) VALUES ('19970505');
mysql> INSERT INTO nom_de_table (idate) VALUES ('97-05-05');
mysql> INSERT INTO nom_de_table (idate) VALUES ('1997.05.05');
mysql> INSERT INTO nom_de_table (idate) VALUES ('1997 05 05');
mysql> INSERT INTO nom_de_table (idate) VALUES ('0000-00-00');
mysql> SELECT idate FROM nom_de_table WHERE idate >= '1997-05-05';
mysql> SELECT idate FROM nom_de_table WHERE idate >= 19970505;
mysql> SELECT MOD(idate,100) FROM nom_de_table WHERE idate >= 19970505;
mysql> SELECT idate FROM nom_de_table WHERE idate >= '19970505';
Toutefois, ce qui suit ne fonctionnera pas :
mysql> SELECT idate FROM nom_de_table WHERE STRCMP(idate,'19970505')=0;
STRCMP() est une fonction de chaînes de caractères, il convertit donc
idate en une chaîne et effectue une comparaison de chaînes. Il ne convertit
pas '19970505' en date et n'effectue donc pas de comparaison de dates.
Notez que MySQL vérifie très peu l'intégrité des dates. Si vous stockez une date
erronée, comme '1998-2-31', la date erronée sera enregistrée.
Vu que MySQL compresse les dates pour les stocker, il ne peut stocker tout format donné car il risquerait de ne pas correspondre au tampon de résultat. Les règles d'acceptations de dates sont :
Si MySQL peut enregistrer et récupérer une date donnée, la date erronée est acceptée
pour les colonnes DATE et DATETIME
Toutes les valeurs de ours comprises entre 0 et 31 sont acceptées. Cela est fort convenable pour les applications web où vous demandez l'année, mois et jour dans trois champs textes (ou liste déroulantes) différents.
Le champ jour ou mois peut être un zéro. Cela est convenable si vous voulez enregistrer
un anniversaire dans une colonne DATE et que vous ne connaissez qu'une partie de
la date.
Si la date ne peut être convertie en une valeur raisonnable, un 0 est inséré
dans le champ DATE, il sera récupéré en tant que 0000-00-00. Cela est
une solution rapide et convenue vu que nous considérons que la responsabilité de la
base de données est de récupérer la même date que vous aviez stocké (même si la date
n'est pas correcte). Nous pensons que c'est à l'application de vérifier les dates, et
non au serveur de le faire.
© 1995-2005 MySQL AB. All rights reserved.
