
Il existe deux fonctions permettant d'avoir la date actuelle (juste la date, sans l'heure, donc au format
DATE
) :CURDATE()
;CURRENT_DATE()
, qui peut également s'utiliser sans parenthèses, comme plusieurs autres fonctions temporelles.
SELECT CURDATE(), CURRENT_DATE(), CURRENT_DATE;
CURDATE()
|
CURRENT_DATE()
|
CURRENT_DATE
|
---|---|---|
2011-10-25
|
2011-10-25
|
2011-10-25
|
À nouveau, deux fonctions existent, extrêmement similaires aux fonctions permettant d'avoir la date actuelle. Il suffit en effet de remplacer
DATE
par TIME
dans le nom de la fonction.
SELECT CURTIME(), CURRENT_TIME(), CURRENT_TIME;
CURTIME()
|
CURRENT_TIME()
|
CURRENT_TIME
|
---|---|---|
18:04:20
|
18:04:20
|
18:04:20
|
Les fonctions
Pour obtenir la date et l'heure actuelles (format
DATETIME
), c'est Byzance : vous avez le choix entre cinq fonctions différentes !NOW() et SYSDATE()
NOW()
est sans doute la fonction MySQL la plus utilisée pour obtenir la date du jour. C'est aussi la plus facile à retenir (bien que les noms des fonctions soient souvent explicites en SQL), puisque now veut dire "maintenant" en anglais. SYSDATE()
("system date") est aussi pas mal utilisée.
SELECT NOW(), SYSDATE();
NOW()
|
SYSDATE()
|
---|---|
2011-10-26 09:40:18
|
2011-10-26 09:40:18
|
Et les autres
Les trois autres fonctions peuvent s'utiliser avec ou sans parenthèses.
CURRENT_TIMESTAMP
ouCURRENT_TIMESTAMP()
LOCALTIME
ouLOCALTIME()
LOCALTIMESTAMP
ouLOCALTIMESTAMP()
SELECT LOCALTIME, CURRENT_TIMESTAMP(), LOCALTIMESTAMP;
LOCALTIME
|
CURRENT_TIMESTAMP()
|
LOCALTIMESTAMP
|
---|---|---|
2011-10-26 10:02:31
|
2011-10-26 10:02:31
|
2011-10-26 10:02:31
|
Qui peut le plus, peut le moins
Il est tout à fait possible d'utiliser une des fonctions donnant l'heure et la date pour remplir une colonne de type
DATE
, ou de type TIME
. MySQL convertira simplement le DATETIME
en DATE
, ou enTIME
, en supprimant la partie inutile.Exemple
Créons une table de test simple, avec juste trois colonnes. Une de type
DATE
, une de type TIME
, une de type DATETIME
. On peut voir que l'insertion d'une ligne en utilisant NOW()
pour les trois colonnes donne le résultat attendu.
dateActu
|
timeActu
|
datetimeActu
|
---|---|---|
2011-10-26
|
11:22:10
|
2011-10-26 11:22:10
|
Timestamp Unix
Il existe encore une fonction qui peut donner des informations sur la date et l'heure actuelle, sous forme de timestamp Unix ; ce qui est donc le nombre de secondes écoulées depuis le premier janvier 1970, à 00:00:00. Il s'agit de
UNIX_TIMESTAMP()
.
Je vous la donne au cas où, mais j'espère que vous ne vous en servirez pas pour stocker vos dates sous forme d'
INT
avec un timestamp Unix !
SELECT UNIX_TIMESTAMP();
UNIX_TIMESTAMP()
|
---|
1319621754
|
En résumé
- La date du jour peut s'obtenir avec
CURDATE()
etCURRENT_DATE()
. - L'heure actuelle peut s'obtenir avec
CURTIME()
etCURRENT_TIME()
. - L'heure et la date actuelles peuvent s'obtenir avec
NOW()
,SYSDATE()
,LOCALTIME()
,CURRENT_TIMESTAMP()
,LOCALTIMESTAMP()
. - On peut insérer un
DATETIME
dans une colonneDATE
ouTIME
. MySQL ôtera la partie inutile.