Skip to content

Manipulation de dates

En MySQL, il est possible de manipuler des dates. On dispose pour cela de fonctions et de mots clés.

Les fonctions

Fonction Description
NOW() Envoi la date heure du client host sous forma datetime
CURDATE() Envoi la date courrante de l’host sous format date
CURTIME() Envoi l’heure complete courrante de l’host sous format time
YEAR() Envoi l’année courrante de l’host
Il est possible de donner un parametre à YEAR()
MONTH() Envoi le mois courrant de l’host
Il est possible de donner un parametre à MONTH()
DAY() / DAYOFMONTH() Envoi le jour courrant de l’host
Il est possible de donner un parametre à DAY()
DAYNAME() Envoi le jour en lettre de l’host, en Anglais
Il est possible de donner un parametre à DAYNAME()
HOUR() Envoi l’heure courrante de l’host
Il est possible de donner un parametre à HOUR()
MINUTE() Envoi les minutes courrante de l’host
Il est possible de donner un parametre à MINUTE()
SECOND() Envoi les secondes courrante de l’host
Il est possible de donner un parametre à SECOND()

Les mots clés

Parmis les mots clés de manipulation de date, il y a celles qui permettent d’ajouter ou soustraire du temps à une date

DATE {+|-} INTERVAL quantité {MINUTE|SECOND|HOUR|MONTH|YEAR|YEAR_MONTH|} 

Notes

Le INTERVAL permet de garder le format DATETIME. si on fait un NOW() +INTERVAL 5 DAY +3 MINUTE, on obtiendra un date time NON formaté.

Pour les formats HOUR_MINUTE par exemple, il faut envoyer une valeur formattée : pour un HOUR_MINUTE : ‘hh:ii’. Le ‘:’ pouvant etre un autre caractere.

ATTENTION :

mysql> SELECT NOW(), NOW() +INTERVAL '03430' HOUR_MINUTE;
+---------------------+-------------------------------------+
| NOW()               | NOW() +INTERVAL '03430' HOUR_MINUTE |
+---------------------+-------------------------------------+
| 2008-02-06 11:52:42 | 2008-02-08 21:02:42                 |
+---------------------+-------------------------------------+
1 row in set (0.01 sec)

mysql> SELECT NOW(), NOW() +INTERVAL '03 30' HOUR_MINUTE;
+---------------------+-------------------------------------+
| NOW()               | NOW() +INTERVAL '03 30' HOUR_MINUTE |
+---------------------+-------------------------------------+
| 2008-02-06 11:52:46 | 2008-02-06 15:22:46                 |
+---------------------+-------------------------------------+
1 row in set (0.00 sec)