samedi 15 mars 2014

20 - date

0 commentaires



Il existe deux fonctions permettant d'avoir la date actuelle (juste la date, sans l'heure, donc au formatDATE) :
  • CURDATE() ;
  • CURRENT_DATE(), qui peut également s'utiliser sans parenthèses, comme plusieurs autres fonctions temporelles.
1SELECT 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.
1SELECT 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.
1SELECT 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 ou CURRENT_TIMESTAMP()
  • LOCALTIME ou LOCALTIME()
  • LOCALTIMESTAMP ou LOCALTIMESTAMP()
1SELECT LOCALTIMECURRENT_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.
1-- Création d'une table de test toute simple
2CREATE TABLE testDate (
3    dateActu DATE
4    timeActu TIME
5    datetimeActu DATETIME
6);
7
8INSERT INTO testDate VALUES (NOW()NOW()NOW());
9
10SELECT *
11FROM testDate;
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 !
1SELECT UNIX_TIMESTAMP();
UNIX_TIMESTAMP()
1319621754

En résumé

  • La date du jour peut s'obtenir avec CURDATE() et CURRENT_DATE().
  • L'heure actuelle peut s'obtenir avec CURTIME() et CURRENT_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 colonne DATE ou TIME. MySQL ôtera la partie inutile.

Leave a Reply