Gingko 2008-02-20 02:50:00 le mercredi 20 février 2008
Bavard 2009-03-26 08:28:00 le jeudi 26 mars 2009
Parlotte 2009-03-26 07:55:00 le jeudi 26 mars 2009
Autres exemples
Attention à bien échapper les guillemets éventuels dans la chaîne de caractères du format.
Code : SQL
SELECT DATE_FORMAT(NOW(), 'Nous sommes aujourd''hui le %d %M de
l''année %Y. Il est actuellement %l heures et %i minutes.') AS
Top_date_longue;
SELECT DATE_FORMAT(NOW(), '%d %b. %y - %r') AS Top_date_courte;
Top_date_longue
Nous sommes aujourd'hui le 27 octobre de l'année 2011. Il est actuellement 3 heures et 17 minutes.
Top_date_courte
27 oct. 11 - 03:34:40 PM
Fonction supplémentaire pour l'heure
DATE_FORMAT() peut s'utiliser sur des données de type DATE, TIME ou DATETIME. Mais il existe également une fonction
TIME_FORMAT(heure, format), qui ne sert qu'à formater les heures (et ne doit donc pas s'utiliser sur une DATE). Elle
s'utilise exactement de la même manière, simplement il faut y utiliser des spécificateurs ayant du sens pour une donnée TIME,
sinon NULL ou 0 est renvoyé.
Si un mauvais format de TIME ou DATETIME est donné à TIME_FORMAT() (par exemple, si on lui donne une DATE), MySQL
va tenter d'interpréter la donnée et renverra bien un résultat, mais celui-ci n'aura peut-être pas beaucoup de sens (pour vous du
moins).
Exemples :
Code : SQL
-- Sur une DATETIME
SELECT TIME_FORMAT(NOW(), '%r') AS sur_datetime,
TIME_FORMAT(CURTIME(), '%r') AS sur_time,
TIME_FORMAT(NOW(), '%M %r') AS mauvais_specificateur,
TIME_FORMAT(CURDATE(), '%r') AS sur_date;
sur_datetime sur_time mauvais_specificateur
sur_date
10:58:47 AM 10:58:47 AM NULL
12:20:12 AM
L'application de TIME_FORMAT() sur CURDATE() a renvoyé un avertissement :
Level Code
Message
Warning 1292 Truncated incorrect time value: '2012-04-30'
Partie 4 : Fonctions : manipuler les dates
203/414
www.openclassrooms.com
Bavard 2009-03-26 08:28:00 le jeudi 26 mars 2009
Parlotte 2009-03-26 07:55:00 le jeudi 26 mars 2009
Autres exemples
Attention à bien échapper les guillemets éventuels dans la chaîne de caractères du format.
Code : SQL
SELECT DATE_FORMAT(NOW(), 'Nous sommes aujourd''hui le %d %M de
l''année %Y. Il est actuellement %l heures et %i minutes.') AS
Top_date_longue;
SELECT DATE_FORMAT(NOW(), '%d %b. %y - %r') AS Top_date_courte;
Top_date_longue
Nous sommes aujourd'hui le 27 octobre de l'année 2011. Il est actuellement 3 heures et 17 minutes.
Top_date_courte
27 oct. 11 - 03:34:40 PM
Fonction supplémentaire pour l'heure
DATE_FORMAT() peut s'utiliser sur des données de type DATE, TIME ou DATETIME. Mais il existe également une fonction
TIME_FORMAT(heure, format), qui ne sert qu'à formater les heures (et ne doit donc pas s'utiliser sur une DATE). Elle
s'utilise exactement de la même manière, simplement il faut y utiliser des spécificateurs ayant du sens pour une donnée TIME,
sinon NULL ou 0 est renvoyé.
Si un mauvais format de TIME ou DATETIME est donné à TIME_FORMAT() (par exemple, si on lui donne une DATE), MySQL
va tenter d'interpréter la donnée et renverra bien un résultat, mais celui-ci n'aura peut-être pas beaucoup de sens (pour vous du
moins).
Exemples :
Code : SQL
-- Sur une DATETIME
SELECT TIME_FORMAT(NOW(), '%r') AS sur_datetime,
TIME_FORMAT(CURTIME(), '%r') AS sur_time,
TIME_FORMAT(NOW(), '%M %r') AS mauvais_specificateur,
TIME_FORMAT(CURDATE(), '%r') AS sur_date;
sur_datetime sur_time mauvais_specificateur
sur_date
10:58:47 AM 10:58:47 AM NULL
12:20:12 AM
L'application de TIME_FORMAT() sur CURDATE() a renvoyé un avertissement :
Level Code
Message
Warning 1292 Truncated incorrect time value: '2012-04-30'
Partie 4 : Fonctions : manipuler les dates
203/414
www.openclassrooms.com
