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)
|
- 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)
|
- 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: 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)
|
- 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)
|
- 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)
|
- Utilisez plutôt CURRENT_TIMESTAMP qui est plus standard.
|
|
NOW() |
NOW()+0 |
2001-07-29 18:20:07 |
20010729182007 |
|
SQRT(nombre) |
MySQL|Oracle|PostgreSQL |
Retourne la racine carrée de "nombre"
|
- 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)
|
- 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 |
|
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