15.Les fonctions SQL

15.4.Les fonctions SQL de manipulation de date

15.4.1.La date et/ou l'heure courante

CURDATE() MySQL
Retourne la date courante au format AAAA-MM-JJ (ou AAAAMMJJ si le résultat est converti en entier)
rem
  • Utilisez plutôt CURRENT_DATE qui est plus standard.
CURDATE() CURDATE()+0
2001-07-29 20010729
SELECT CURDATE(),CURDATE()+0
CURRENT_DATE MySQL|PostgreSQL
Retourne la date courante au format AAAA-MM-JJ (ou AAAAMMJJ si le résultat est converti en entier)
rem
  • MySQL accepte aussi bien CURRENT_DATE (en tant que variable) que CURRENT_DATE() (en tant que fonction) mais la conversion en entier ne peut s'appliquer qu'à la fonction. Le comportement de PostgreSQL sur ce dernier point n'a pas été vérifié.
CURRENT_DATE CURRENT_DATE()+0
2001-07-29 20010729
SELECT CURRENT_DATE,CURRENT_DATE()+0
CURRENT_TIME MySQL|PostgreSQL
Retourne l'heure courante au format HH:MM:SS (ou HHMMSS si le résultat est converti en entier)
rem
  • REM: MySQL accepte aussi bien CURRENT_TIME (en tant que variable) que CURRENT_TIME() (en tant que fonction) mais la conversion en entier ne peut s'appliquer qu'à la fonction. Le comportement de PostgreSQL sur ce dernier point n'a pas été vérifié.
CURRENT_TIME CURRENT_TIME()+0
18:20:07 182007
SELECT CURRENT_TIME,CURRENT_TIME()+0
CURRENT_TIMESTAMP MySQL|PostgreSQL
Retourne la date courante au format AAAA-MM-JJ HH:MM:SS (ou AAAAMMJJHHMMSS si le résultat est converti en entier)
rem
  • MySQL accepte aussi bien CURRENT_TIMESTAMP (en tant que variable) que CURRENT_TIMESTAMP() (en tant que fonction) mais la conversion en entier ne peut s'appliquer qu'à la fonction. Le comportement de PostgreSQL sur ce dernier point n'a pas été vérifié.
CURRENT_TIMESTAMP CURRENT_TIMESTAMP()+0
2001-07-29 18:20:07 20010729182007
SELECT CURRENT_DATE,CURRENT_DATE()+0
CURTIME() (MySQL) MySQL
Retourne l'heure courante au format HH:MM:SS (ou HHMMSS si le résultat est converti en entier)
rem
  • Utilisez plutôt CURRENT_TIME qui est plus standard.
CURTIME() CURTIME()+0
18:20:07 182007
SELECT CURTIME(),CURTIME()+0
MOD(nombre1,nombre2) MySQL|Oracle|PostgreSQL
Retourne le reste de la division de "nombre1" par "nombre2"
NOW() MySQL
Retourne la date courante au format AAAA-MM-JJ HH:MM:SS (ou AAAAMMJJHHMMSS si le résultat est converti en entier)
rem
  • Utilisez plutôt CURRENT_TIMESTAMP qui est plus standard.
NOW() NOW()+0
2001-07-29 18:20:07 20010729182007
SELECT NOW(),NOW()+0
SQRT(nombre) MySQL|Oracle|PostgreSQL
Retourne la racine carrée de "nombre"
rem
  • Avec PostgreSQL cette dernière DOIT être de type "float"
SYSDATE() MySQL
Retourne la date courante au format AAAA-MM-JJ HH:MM:SS (ou AAAAMMJJHHMMSS si le résultat est converti en entier)
rem
  • Utilisez plutôt CURRENT_TIMESTAMP qui est plus standard.
SYSDATE() SYSDATE()+0
2001-07-29 18:20:07 20010729182007
SELECT SYSDATE(),SYSDATE()+0
UNIX_TIMESTAMP() MySQL
Retourne le nombre de secondes écoulées depuis le 1er Janvier 1970
UNIX_TIMESTAMP()
996423607
SELECT UNIX_TIMESTAMP()

15.4.2.Les fonctions d'opérations sur les dates

ADDDATE(date, INTERVAL interval) MySQL
Ajoute un interval de temps à "date".
monchamp ADDDATE(monchamp, INTERVAL 1 SECOND)
2001-01-01 20:00:00 2001-01-01 20:00:01
SELECT monchamp, ADDDATE(monchamp, INTERVAL 1 SECOND) FROM matable
monchamp ADDDATE(monchamp, INTERVAL 1 MINUTE)
2001-01-01 20:00:00 2001-01-01 20:01:00
SELECT monchamp, ADDDATE(monchamp, INTERVAL 1 MINUTE) FROM matable
monchamp ADDDATE(monchamp, INTERVAL 1 HOUR)
2001-01-01 20:00:00 2001-01-01 21:00:00
SELECT monchamp, ADDDATE(monchamp, INTERVAL 1 HOUR) FROM matable
monchamp ADDDATE(monchamp, INTERVAL 1 DAY)
2001-01-01 20:00:00 2001-01-02 20:00:00
SELECT monchamp, ADDDATE(monchamp, INTERVAL 1 DAY) FROM matable
monchamp ADDDATE(monchamp, INTERVAL 1 MONTH)
2001-01-01 20:00:00 2001-02-01 20:00:00
SELECT monchamp, ADDDATE(monchamp, INTERVAL 1 MONTH) FROM matable
monchamp ADDDATE(monchamp, INTERVAL 1 YEAR)
2001-01-01 20:00:00 2002-01-01 20:00:00
SELECT monchamp, ADDDATE(monchamp, INTERVAL 1 YEAR) FROM matable
monchamp ADDDATE(monchamp, INTERVAL "01:02" MINUTE_SECOND)
2001-01-01 20:00:00 2001-01-01 20:01:02
SELECT monchamp, ADDDATE(monchamp, INTERVAL "01:02" MINUTE_SECOND) FROM matable
monchamp ADDDATE(monchamp, INTERVAL "01:02" HOUR_MINUTE)
2001-01-01 20:00:00 2001-01-01 21:02:00
SELECT monchamp, ADDDATE(monchamp, INTERVAL "01:02" HOUR_MINUTE) FROM matable
monchamp ADDDATE(monchamp, INTERVAL "01 02" DAY_HOUR)
2001-01-01 20:00:00 2001-01-02 22:00:00
SELECT monchamp, ADDDATE(monchamp, INTERVAL "01 02" DAY_HOUR) FROM matable
monchamp ADDDATE(monchamp, INTERVAL "01-02" YEAR_MONTH)
2001-01-01 20:00:00 2002-03-01 20:00:00
SELECT monchamp, ADDDATE(monchamp, INTERVAL "01-02" YEAR_MONTH) FROM matable
monchamp ADDDATE(monchamp, INTERVAL "01:02:03" HOUR_SECOND)
2001-01-01 20:00:00 2001-01-01 21:02:03
SELECT monchamp, ADDDATE(monchamp, INTERVAL "01:02:03" HOUR_SECOND) FROM matable
monchamp ADDDATE(monchamp, INTERVAL "01 02:03" DAY_MINUTE)
2001-01-01 20:00:00 2001-01-02 22:03:00
SELECT monchamp, ADDDATE(monchamp, INTERVAL "01 02:03" DAY_MINUTE) FROM matable
monchamp ADDDATE(monchamp, INTERVAL "01 02:03:04" DAY_SECOND)
2001-01-01 20:00:00 2001-01-02 22:03:04
SELECT monchamp,ADDDATE(monchamp, INTERVAL "01 02:03:04" DAY_SECOND) FROM matable
DATE_ADD(date, INTERVAL interval) MySQL
Cf. ADDDATE(date, INTERVAL interval)

15.4.3.Les autres fonctions

DAYOFMONTH(date) (MySQL)
retourne le numéro du jour par rapport au mois de "date"
DAYOFWEEK(date) (MySQL)
retourne le numéro du jour par rapport à la semaine de "date" (commence à Dimanche=1)
DAYOFYEAR(date) (MySQL)
retourne le numéro du jour par rapport à l"année de "date"
DATE_FORMAT(date,format) (MySQL)
retourne la date "date" au format spécifié par "format"
DATE_SUB(date,INTERVAL interval) (MySQL)
Ote un interval de temps à "date"
FROM_DAYS(entier) (MySQL)
retourne la date correspondant à "entier" jours depuis l'an 0
FROM_UNIXTIME(entier) (MySQL)
retourne la date "entier" exprimée en secondes depuis le 1er Janvier 1970 au format AAAA-MM-JJ HH:MM:SS (ou AAAAMMJJHHMMSS s'il est converti en entier)
FROM_UNIXTIME(entier,format) (MySQL)
retourne la date "entier" exprimée en secondes depuis le 1er Janvier 1970 au format spécifié par "format"
HOUR(heure) (MySQL)
retourne l'heure (0-23) de "heure"
MINUTE(heure) (MySQL)
retourne le champ minute de "heure"
MONTH(date) (MySQL)
retourne le mois de "date"
MONTHNAME(date) (MySQL)
retourne le mois de "date" en toutes lettres
PERIOD_ADD(periode,entier) (MySQL)
ajoute "entier" mois à "periode", où période represente un mois au format AAMM ou AAAAMM, retourne une periode au format AAAAMM
PERIOD_DIFF(periode1,periode2) (MySQL)
retourne le nombre de mois entre "periode1" et "periode2"
QUARTER(date) (MySQL)
retourne le numéro du trimestre de "date"
SEC_TO_TIME(entier) (MySQL)
retourne l'heure "entier" exprimée en seconde au format HH:MM:SS (ou HHMMSS s'il est converti en entier)
SECOND(heure) (MySQL)
retourne le champ seconde de "heure"
SUBDATE(date,INTERVAL interval) (MySQL)
Ote un interval de temps à "date"
TIME_FORMAT(heure,format) (MySQL)
retourne l'heure "heure" au format spécifié par "format"
TIME_TO_SEC(heure) (MySQL)
converti l'heure en secondes
TO_DAYS(date) (MySQL)
converti la date en nombre de jours depuis l'année 0
UNIX_TIMESTAMP(date) (MySQL)
Retourne le nombre de secondes entre le 1er Janvier 1970 et "date"
UNIX_TIMESTAMP('2001-01-01 20:00:00')
978375600
SELECT UNIX_TIMESTAMP('2001-01-01 20:00:00')
WEEK(date) (MySQL)
retourne le numéro de la semaine par rapport à l'année de "date"
WEEK(date,entier) (MySQL)
retourne le numéro de la semaine par rapport à l'année de "date", si entier=0 la semaine débute le Dimanche, si entier=1 la semaine débute le Lundi
WEEKDAY(date) (MySQL)
retourne le numéro du jour par rapport à la semaine de "date" (commence à Lundi=0)
YEAR(date) (MySQL)
retourne l'année de "date"
YEARWEEK(date) (MySQL)
retourne l'année et le numéro de la semaine par rapport à l'année de "date"
YEARWEEK(date,entier) (MySQL)
retourne l'année et le numéro de la semaine par rapport à l'année de "date", si entier=0 la semaine débute le Dimanche, si entier=1 la semaine débute le Lundi