SQL - Fonctions de date

Le tableau suivant contient une liste de toutes les fonctions importantes liées à la date et à l'heure disponibles via SQL. Il existe diverses autres fonctions prises en charge par votre SGBDR. La liste donnée est basée sur le SGBDR MySQL.

N ° Sr. Description de la fonction
1 AJOUTER ()

Ajoute des dates

2 AJOUTER DU TEMPS()

Ajoute du temps

3 CONVERT_TZ ()

Convertit d'un fuseau horaire à un autre

4 CURDATE ()

Renvoie la date actuelle

5 CURRENT_DATE (), CURRENT_DATE

Synonymes de CURDATE ()

6 CURRENT_TIME (), CURRENT_TIME

Synonymes de CURTIME ()

sept CURRENT_TIMESTAMP (), CURRENT_TIMESTAMP

Synonymes de NOW ()

8 CURTIME ()

Renvoie l'heure actuelle

9 DATE_ADD ()

Ajoute deux dates

dix FORMAT DE DATE()

Formate la date comme spécifié

11 DATE_SUB ()

Soustrait deux dates

12 DATE()

Extrait la partie date d'une expression de date ou d'heure

13 DATEDIFF ()

Soustrait deux dates

14 JOURNÉE()

Synonyme de DAYOFMONTH ()

15 DAYNAME ()

Renvoie le nom du jour de la semaine

16 JOUR DU MOIS()

Renvoie le jour du mois (1-31)

17 JOUR DE LA SEMAINE()

Renvoie l'index du jour de la semaine de l'argument

18 DAYOFYEAR ()

Renvoie le jour de l'année (1-366)

19 EXTRAIT

Extrait une partie d'une date

20 FROM_DAYS ()

Convertit un numéro de jour en date

21 FROM_UNIXTIME ()

Formate la date sous forme d'horodatage UNIX

22 HEURE()

Extrait l'heure

23 DERNIER JOUR

Renvoie le dernier jour du mois pour l'argument

24 LOCALTIME (), LOCALTIME

Synonyme de NOW ()

25 LOCALTIMESTAMP, LOCALTIMESTAMP ()

Synonyme de NOW ()

26 MAKEDATE ()

Crée une date à partir de l'année et du jour de l'année

27 PRENDRE LE TEMPS

PRENDRE LE TEMPS()

28 MICROSECONDE()

Renvoie les microsecondes de l'argument

29 MINUTE()

Renvoie la minute de l'argument

30 MOIS()

Renvoie le mois à partir de la date passée

31 MONTHNAME ()

Renvoie le nom du mois

32 MAINTENANT()

Renvoie la date et l'heure actuelles

33 PERIOD_ADD ()

Ajoute une période à un an-mois

34 PERIOD_DIFF ()

Renvoie le nombre de mois entre les périodes

35 TRIMESTRE()

Renvoie le trimestre à partir d'un argument de date

36 SEC_TO_TIME ()

Convertit les secondes au format «HH: MM: SS»

37 SECONDE()

Renvoie le deuxième (0-59)

38 STR_TO_DATE ()

Convertit une chaîne en date

39 SUBDATE ()

Lorsqu'il est invoqué avec trois arguments, un synonyme de DATE_SUB ()

40 SOUS-TEMPS ()

Soustrait les temps

41 SYSDATE ()

Renvoie l'heure à laquelle la fonction s'exécute

42 FORMAT DE L'HEURE()

Formats en fonction du temps

43 TIME_TO_SEC ()

Renvoie l'argument converti en secondes

44 TEMPS()

Extrait la partie temporelle de l'expression passée

45 TIMEDIFF ()

Soustrait le temps

46 HORAIRE ()

Avec un seul argument, cette fonction renvoie la date ou l'expression datetime. Avec deux arguments, la somme des arguments

47 TIMESTAMPADD ()

Ajoute un intervalle à une expression datetime

48 TIMESTAMPDIFF ()

Soustrait un intervalle d'une expression datetime

49 TO_DAYS ()

Renvoie l'argument de date converti en jours

50 UNIX_TIMESTAMP ()

Renvoie un horodatage UNIX

51 UTC_DATE ()

Renvoie la date UTC actuelle

52 UTC_TIME ()

Renvoie l'heure UTC actuelle

53 UTC_TIMESTAMP ()

Renvoie la date et l'heure UTC actuelles

54 LA SEMAINE()

Renvoie le numéro de la semaine

55 JOUR DE LA SEMAINE()

Renvoie l'index des jours de la semaine

56 SEMAINE D'ANNÉE ()

Renvoie la semaine calendaire de la date (1-53)

57 AN()

Renvoie l'année

58 SEMAINE ()

Renvoie l'année et la semaine

ADDDATE (date, INTERVAL unité expr), ADDDATE (expr, jours)

Lorsqu'il est appelé avec la forme INTERVAL du deuxième argument, ADDDATE () est un synonyme de DATE_ADD (). La fonction associée SUBDATE () est un synonyme de DATE_SUB (). Pour plus d'informations sur l'argument d'unité INTERVAL, consultez la discussion sur DATE_ADD ().

mysql> SELECT DATE_ADD('1998-01-02', INTERVAL 31 DAY);
+---------------------------------------------------------+
| DATE_ADD('1998-01-02', INTERVAL 31 DAY)                 |
+---------------------------------------------------------+
| 1998-02-02                                              |
+---------------------------------------------------------+
1 row in set (0.00 sec)

mysql> SELECT ADDDATE('1998-01-02', INTERVAL 31 DAY);
+---------------------------------------------------------+
| ADDDATE('1998-01-02', INTERVAL 31 DAY)                  |
+---------------------------------------------------------+
| 1998-02-02                                              |
+---------------------------------------------------------+
1 row in set (0.00 sec)

Lorsqu'il est invoqué avec la forme jours du deuxième argument, MySQL le traite comme un nombre entier de jours à ajouter à expr.

mysql> SELECT ADDDATE('1998-01-02', 31);
+---------------------------------------------------------+
| DATE_ADD('1998-01-02', INTERVAL 31 DAY)                 |
+---------------------------------------------------------+
| 1998-02-02                                              |
+---------------------------------------------------------+
1 row in set (0.00 sec)

ADDTIME (expr1, expr2)

ADDTIME () ajoute expr2 à expr1 et renvoie le résultat. L'expr1 est une expression d'heure ou de date / heure, tandis que l'expr2 est une expression d'heure.

mysql> SELECT ADDTIME('1997-12-31 23:59:59.999999','1 1:1:1.000002');
+---------------------------------------------------------+
| DATE_ADD('1997-12-31 23:59:59.999999','1 1:1:1.000002') |
+---------------------------------------------------------+
| 1998-01-02 01:01:01.000001                              |
+---------------------------------------------------------+
1 row in set (0.00 sec)

CONVERT_TZ (dt, from_tz, vers_tz)

Cela convertit une valeur datetime dt du fuseau horaire donné par from_tz au fuseau horaire donné par to_tz et renvoie la valeur résultante. Cette fonction renvoie NULL si les arguments ne sont pas valides.

mysql> SELECT CONVERT_TZ('2004-01-01 12:00:00','GMT','MET');
+---------------------------------------------------------+
| CONVERT_TZ('2004-01-01 12:00:00','GMT','MET')           |
+---------------------------------------------------------+
| 2004-01-01 13:00:00                                     |
+---------------------------------------------------------+
1 row in set (0.00 sec)

mysql> SELECT CONVERT_TZ('2004-01-01 12:00:00','+00:00','+10:00');
+---------------------------------------------------------+
| CONVERT_TZ('2004-01-01 12:00:00','+00:00','+10:00')     |
+---------------------------------------------------------+
| 2004-01-01 22:00:00                                     |
+---------------------------------------------------------+
1 row in set (0.00 sec)

CURDATE ()

Renvoie la date actuelle sous forme de valeur au format «AAAA-MM-JJ» ou AAAAMMJJ, selon que la fonction est utilisée dans une chaîne ou dans un contexte numérique.

mysql> SELECT CURDATE();
+---------------------------------------------------------+
| CURDATE()                                               |
+---------------------------------------------------------+
| 1997-12-15                                              |
+---------------------------------------------------------+
1 row in set (0.00 sec)

mysql> SELECT CURDATE() + 0;
+---------------------------------------------------------+
| CURDATE() + 0                                           |
+---------------------------------------------------------+
| 19971215                                                |
+---------------------------------------------------------+
1 row in set (0.00 sec)

CURRENT_DATE et CURRENT_DATE ()

CURRENT_DATE et CURRENT_DATE () sont des synonymes de CURDATE ()

CURTIME ()

Renvoie l'heure actuelle sous forme de valeur au format «HH: MM: SS» ou HHMMSS, selon que la fonction est utilisée dans une chaîne ou dans un contexte numérique. La valeur est exprimée dans le fuseau horaire actuel.

mysql> SELECT CURTIME();
+---------------------------------------------------------+
| CURTIME()                                               |
+---------------------------------------------------------+
| 23:50:26                                                |
+---------------------------------------------------------+
1 row in set (0.00 sec)

mysql> SELECT CURTIME() + 0;
+---------------------------------------------------------+
| CURTIME() + 0                                           |
+---------------------------------------------------------+
| 235026                                                  |
+---------------------------------------------------------+
1 row in set (0.00 sec)

CURRENT_TIME et CURRENT_TIME ()

CURRENT_TIME et CURRENT_TIME () sont des synonymes de CURTIME ().

CURRENT_TIMESTAMP et CURRENT_TIMESTAMP ()

CURRENT_TIMESTAMP et CURRENT_TIMESTAMP () sont des synonymes de NOW ().

DATE (expr)

Extrait la partie date de la date ou de l'expression datetime expr.

mysql> SELECT DATE('2003-12-31 01:02:03');
+---------------------------------------------------------+
| DATE('2003-12-31 01:02:03')                             |
+---------------------------------------------------------+
|  2003-12-31                                             |
+---------------------------------------------------------+
1 row in set (0.00 sec)

DATEDIFF (expr1, expr2)

DATEDIFF () renvoie expr1. expr2 exprimé sous forme de valeur en jours d'une date à l'autre. Expr1 et expr2 sont des expressions de date ou de date et d'heure. Seules les parties de date des valeurs sont utilisées dans le calcul.

mysql> SELECT DATEDIFF('1997-12-31 23:59:59','1997-12-30');
+---------------------------------------------------------+
| DATEDIFF('1997-12-31 23:59:59','1997-12-30')            |
+---------------------------------------------------------+
| 1                                                       |
+---------------------------------------------------------+
1 row in set (0.00 sec)

DATE_ADD (date, unité expr INTERVAL), DATE_SUB (date, unité expr INTERVAL)

Ces fonctions exécutent l'arithmétique des dates. ledateest une valeur DATETIME ou DATE spécifiant la date de début. leexprest une expression spécifiant la valeur d'intervalle à ajouter ou à soustraire à la date de début. L'expr est une chaîne; il peut commencer par un «-» pour les intervalles négatifs.

UNE unit est un mot-clé indiquant les unités dans lesquelles l'expression doit être interprétée.

le INTERVAL Le mot clé et le spécificateur d'unité ne sont pas sensibles à la casse.

Le tableau suivant montre la forme attendue de l'argument expr pour chaque valeur d'unité.

valeur unitaire Expected exprFormat
MICROSECONDE MICROSECONDES
SECONDE SECONDES
MINUTE MINUTES
HEURE HEURES
JOURNÉE JOURNÉES
LA SEMAINE SEMAINES
MOIS MOIS
TRIMESTRE QUARTIERS
AN ANS
SECOND_MICROSECOND 'SECOND.MICROSECONDS'
MINUTE_MICROSECOND 'MINUTES.MICROSECONDS'
MINUTE_SECOND 'MINUTES: SECONDES'
HOUR_MICROSECOND 'HEURES.MICROSECONDES'
HOUR_SECOND 'HEURES: MINUTES: SECONDES'
HOUR_MINUTE 'HEURES: MINUTES'
DAY_MICROSECOND 'JOURS.MICROSECONDES'
DAY_SECOND 'JOURS HOURS: MINUTES: SECONDES'
DAY_MINUTE 'JOURS HOURS: MINUTES'
DAY_HOUR 'JOURS HEURES'
ANNÉE MOIS 'ANNÉES-MOIS'

Les valeurs QUARTER et WEEKsont disponibles à partir de MySQL 5.0.0. version.

mysql> SELECT DATE_ADD('1997-12-31 23:59:59', 
   -> INTERVAL '1:1' MINUTE_SECOND);
+---------------------------------------------------------+
| DATE_ADD('1997-12-31 23:59:59', INTERVAL...             |
+---------------------------------------------------------+
| 1998-01-01 00:01:00                                     |
+---------------------------------------------------------+
1 row in set (0.00 sec)

mysql> SELECT DATE_ADD('1999-01-01', INTERVAL 1 HOUR);
+---------------------------------------------------------+
| DATE_ADD('1999-01-01', INTERVAL 1 HOUR)                 |
+---------------------------------------------------------+
| 1999-01-01 01:00:00                                     |
+---------------------------------------------------------+
1 row in set (0.00 sec)

DATE_FORMAT (date, format)

Cette commande met en forme la valeur de date selon la chaîne de format.

Les spécificateurs suivants peuvent être utilisés dans la chaîne de format. Le caractère «%» est requis avant les caractères de spécification de format.

N ° Sr. Spécificateur et description
1

%a

Nom abrégé du jour de la semaine (dim..sam)

2

%b

Nom abrégé du mois (janvier à décembre)

3

%c

Mois, numérique (0..12)

4

%D

Jour du mois avec suffixe anglais (0e, 1er, 2e, 3e,.)

5

%d

Jour du mois, numérique (00..31)

6

%e

Jour du mois, numérique (0..31)

sept

%f

Microsecondes (000000..999999)

8

%H

Heure (00..23)

9

%h

Heure (01..12)

dix

%I

Heure (01..12)

11

%i

Minutes, numériques (00..59)

12

%j

Jour de l'année (001..366)

13

%k

Heure (0..23)

14

%l

Heure (1..12)

15

%M

Nom du mois (janvier..décembre)

16

%m

Mois, numérique (00..12)

17

%p

AM ou PM

18

%r

Heure, 12 heures (hh: mm: ss suivi de AM ou PM)

19

%S

Secondes (00..59)

20

%s

Secondes (00..59)

21

%T

Heure, 24 heures (hh: mm: ss)

22

%U

Semaine (00..53), où dimanche est le premier jour de la semaine

23

%u

Semaine (00..53), où le lundi est le premier jour de la semaine

24

%V

Semaine (01..53), où dimanche est le premier jour de la semaine; utilisé avec% X

25

%v

Semaine (01..53), où lundi est le premier jour de la semaine; utilisé avec% x

26

%W

Nom du jour de la semaine (dimanche..samedi)

27

%w

Jour de la semaine (0 = dimanche..6 = samedi)

28

%X

Année de la semaine où dimanche est le premier jour de la semaine, numérique, quatre chiffres; utilisé avec% V

29

%x

Année pour la semaine, où lundi est le premier jour de la semaine, numérique, quatre chiffres; utilisé avec% v

30

%Y

Année, numérique, quatre chiffres

31

%y

Année, numérique (deux chiffres)

32

%%

Un littéral.%. personnage

33

%x

x, pour any.x. non listé ci-dessus

mysql> SELECT DATE_FORMAT('1997-10-04 22:23:00', '%W %M %Y');
+---------------------------------------------------------+
| DATE_FORMAT('1997-10-04 22:23:00', '%W %M %Y')          |
+---------------------------------------------------------+
| Saturday October 1997                                   |
+---------------------------------------------------------+
1 row in set (0.00 sec)

mysql> SELECT DATE_FORMAT('1997-10-04 22:23:00'
   -> '%H %k %I %r %T %S %w');
+---------------------------------------------------------+
| DATE_FORMAT('1997-10-04 22:23:00.......                 |
+---------------------------------------------------------+
|  22 22 10 10:23:00 PM 22:23:00 00 6                     |
+---------------------------------------------------------+
1 row in set (0.00 sec)

DATE_SUB (date, unité expr INTERVAL)

Ceci est similaire à la fonction DATE_ADD ().

JOUR (date)

Le DAY () est un synonyme de la fonction DAYOFMONTH ().

DAYNAME (date)

Renvoie le nom du jour de la semaine pour la date.

mysql> SELECT DAYNAME('1998-02-05');
+---------------------------------------------------------+
| DAYNAME('1998-02-05')                                   |
+---------------------------------------------------------+
| Thursday                                                |
+---------------------------------------------------------+
1 row in set (0.00 sec)

DAYOFMONTH (date)

Renvoie le jour du mois pour la date, compris entre 0 et 31.

mysql> SELECT DAYOFMONTH('1998-02-03');
+---------------------------------------------------------+
| DAYOFMONTH('1998-02-03')                                |
+---------------------------------------------------------+
| 3                                                       |
+---------------------------------------------------------+
1 row in set (0.00 sec)

DAYOFWEEK (date)

Renvoie l'index des jours de la semaine pour la date (1 = dimanche, 2 = lundi,., 7 = samedi). Ces valeurs d'index correspondent à la norme ODBC.

mysql> SELECT DAYOFWEEK('1998-02-03');
+---------------------------------------------------------+
|DAYOFWEEK('1998-02-03')                                  |
+---------------------------------------------------------+
| 3                                                       |
+---------------------------------------------------------+
1 row in set (0.00 sec)

DAYOFYEAR (date)

Renvoie le jour de l'année pour la date, compris entre 1 et 366.

mysql> SELECT DAYOFYEAR('1998-02-03');
+---------------------------------------------------------+
| DAYOFYEAR('1998-02-03')                                 |
+---------------------------------------------------------+
| 34                                                      |
+---------------------------------------------------------+
1 row in set (0.00 sec)

EXTRAIT (unité DE date)

La fonction EXTRACT () utilise les mêmes types de spécificateurs d'unité que DATE_ADD () ou DATE_SUB (), mais extrait des parties de la date plutôt que d'effectuer une arithmétique de date.

mysql> SELECT EXTRACT(YEAR FROM '1999-07-02');
+---------------------------------------------------------+
| EXTRACT(YEAR FROM '1999-07-02')                         |
+---------------------------------------------------------+
| 1999                                                    |
+---------------------------------------------------------+
1 row in set (0.00 sec)

mysql> SELECT EXTRACT(YEAR_MONTH FROM '1999-07-02 01:02:03');
+---------------------------------------------------------+
| EXTRACT(YEAR_MONTH FROM '1999-07-02 01:02:03')          |
+---------------------------------------------------------+
| 199907                                                  |
+---------------------------------------------------------+
1 row in set (0.00 sec)

FROM_DAYS (N)

Étant donné un numéro de jour N, renvoie une valeur DATE.

mysql> SELECT FROM_DAYS(729669);
+---------------------------------------------------------+
| FROM_DAYS(729669)                                       |
+---------------------------------------------------------+
| 1997-10-07                                              |
+---------------------------------------------------------+
1 row in set (0.00 sec)

Note- Utilisez FROM_DAYS () avec prudence sur les anciennes dates. Il n'est pas destiné à être utilisé avec des valeurs qui précèdent l'avènement du calendrier grégorien (1582).

FROM_UNIXTIME (unix_timestamp)

FROM_UNIXTIME (unix_timestamp, format)

Renvoie une représentation du unix_timestampargument en tant que valeur au format 'AAAA-MM-JJ HH: MM: SS ou AAAAMMJJHHMMSS, selon que la fonction est utilisée dans une chaîne ou dans un contexte numérique. La valeur est exprimée dans le fuseau horaire actuel. L'argument unix_timestamp est une valeur d'horodatage interne, qui est produite par leUNIX_TIMESTAMP() fonction.

Si le format est donné, le résultat est formaté en fonction de la chaîne de format, qui est utilisée de la même manière que celle indiquée dans l'entrée pour le DATE_FORMAT() fonction.

mysql> SELECT FROM_UNIXTIME(875996580);
+---------------------------------------------------------+
| FROM_UNIXTIME(875996580)                                |
+---------------------------------------------------------+
| 1997-10-04 22:23:00                                     |
+---------------------------------------------------------+
1 row in set (0.00 sec)

HEURE (heure)

Renvoie l'heure pour le temps. La plage de la valeur de retour est comprise entre 0 et 23 pour les valeurs d'heure. Cependant, la plage de valeurs TIME est en réalité beaucoup plus grande, donc HOUR peut renvoyer des valeurs supérieures à 23.

mysql> SELECT HOUR('10:05:03');
+---------------------------------------------------------+
| HOUR('10:05:03')                                        |
+---------------------------------------------------------+
| 10                                                      |
+---------------------------------------------------------+
1 row in set (0.00 sec)

LAST_DAY (date)

Prend une valeur de date ou de date / heure et renvoie la valeur correspondante pour le dernier jour du mois. Renvoie NULL si l'argument n'est pas valide.

mysql> SELECT LAST_DAY('2003-02-05');
+---------------------------------------------------------+
| LAST_DAY('2003-02-05')                                  |
+---------------------------------------------------------+
| 2003-02-28                                              |
+---------------------------------------------------------+
1 row in set (0.00 sec)

LOCALTIME et LOCALTIME ()

LOCALTIME et LOCALTIME () sont des synonymes de NOW ().

LOCALTIMESTAMP et LOCALTIMESTAMP ()

LOCALTIMESTAMP et LOCALTIMESTAMP () sont des synonymes de NOW ().

MAKEDATE (année, jour de l'année)

Renvoie une date, des valeurs d'année et de jour de l'année données. La valeur dayofyear doit être supérieure à 0 ou le résultat sera NULL.

mysql> SELECT MAKEDATE(2001,31), MAKEDATE(2001,32);
+---------------------------------------------------------+
| MAKEDATE(2001,31), MAKEDATE(2001,32)                    |
+---------------------------------------------------------+
| '2001-01-31', '2001-02-01'                              |
+---------------------------------------------------------+
1 row in set (0.00 sec)

MAKETIME (heure, minute, seconde)

Renvoie une valeur d'heure calculée à partir des arguments heure, minute et seconde.

mysql> SELECT MAKETIME(12,15,30);
+---------------------------------------------------------+
| MAKETIME(12,15,30)                                      |
+---------------------------------------------------------+
| '12:15:30'                                              |
+---------------------------------------------------------+
1 row in set (0.00 sec)

MICROSECOND (expr)

Renvoie les microsecondes de l'expression d'heure ou de date / heure (expr) sous la forme d'un nombre compris entre 0 et 999999.

mysql> SELECT MICROSECOND('12:00:00.123456');
+---------------------------------------------------------+
| MICROSECOND('12:00:00.123456')                          |
+---------------------------------------------------------+
| 123456                                                  |
+---------------------------------------------------------+
1 row in set (0.00 sec)

MINUTE (temps)

Renvoie la minute pour le temps, entre 0 et 59.

mysql> SELECT MINUTE('98-02-03 10:05:03');
+---------------------------------------------------------+
| MINUTE('98-02-03 10:05:03')                             |
+---------------------------------------------------------+
| 5                                                       |
+---------------------------------------------------------+
1 row in set (0.00 sec)

MOIS (date)

Renvoie le mois pour la date, compris entre 0 et 12.

mysql> SELECT MONTH('1998-02-03')
+---------------------------------------------------------+
| MONTH('1998-02-03')                                     |
+---------------------------------------------------------+
| 2                                                       |
+---------------------------------------------------------+
1 row in set (0.00 sec)

MONTHNAME (date)

Renvoie le nom complet du mois pour une date.

mysql> SELECT MONTHNAME('1998-02-05');
+---------------------------------------------------------+
| MONTHNAME('1998-02-05')                                 |
+---------------------------------------------------------+
| February                                                |
+---------------------------------------------------------+
1 row in set (0.00 sec)

MAINTENANT()

Renvoie la date et l'heure actuelles sous forme de valeur au format «AAAA-MM-JJ HH: MM: SS» ou AAAAMMJJHHMMSS, selon que la fonction est utilisée dans un contexte de chaîne ou numérique. Cette valeur est exprimée dans le fuseau horaire actuel.

mysql> SELECT NOW();
+---------------------------------------------------------+
| NOW()                                                   |
+---------------------------------------------------------+
| 1997-12-15 23:50:26                                     |
+---------------------------------------------------------+
1 row in set (0.00 sec)

PERIOD_ADD (P, N)

Ajoute N mois à une période P (au format YYMM ou YYYYMM). Renvoie une valeur au format AAAAMM. Notez que l'argument de période P n'est pas une valeur de date.

mysql> SELECT PERIOD_ADD(9801,2);
+---------------------------------------------------------+
| PERIOD_ADD(9801,2)                                      |
+---------------------------------------------------------+
| 199803                                                  |
+---------------------------------------------------------+
1 row in set (0.00 sec)

PERIODE_DIFF (P1, P2)

Renvoie le nombre de mois entre les périodes P1 et P2. Ces périodes P1 et P2 doivent être au format YYMM ou YYYYMM. Notez que les arguments de période P1 et P2 ne sont pas des valeurs de date.

mysql> SELECT PERIOD_DIFF(9802,199703);
+---------------------------------------------------------+
| PERIOD_DIFF(9802,199703)                                |
+---------------------------------------------------------+
| 11                                                      |
+---------------------------------------------------------+
1 row in set (0.00 sec)

QUARTIER (date)

Renvoie le trimestre de l'année pour la date, compris entre 1 et 4.

mysql> SELECT QUARTER('98-04-01');
+---------------------------------------------------------+
| QUARTER('98-04-01')                                     |
+---------------------------------------------------------+
| 2                                                       |
+---------------------------------------------------------+
1 row in set (0.00 sec)

Deuxième fois)

Renvoie le second pour le temps, compris entre 0 et 59.

mysql> SELECT SECOND('10:05:03');
+---------------------------------------------------------+
| SECOND('10:05:03')                                      |
+---------------------------------------------------------+
| 3                                                       |
+---------------------------------------------------------+
1 row in set (0.00 sec)

SEC_TO_TIME (secondes)

Renvoie l'argument secondes, converti en heures, minutes et secondes, sous la forme d'une valeur au format «HH: MM: SS» ou HHMMSS, selon que la fonction est utilisée dans un contexte de chaîne ou numérique.

mysql> SELECT SEC_TO_TIME(2378);
+---------------------------------------------------------+
| SEC_TO_TIME(2378)                                       |
+---------------------------------------------------------+
| 00:39:38                                                |
+---------------------------------------------------------+
1 row in set (0.00 sec)

STR_TO_DATE (chaîne, format)

C'est l'inverse de la fonction DATE_FORMAT (). Il prend une chaîne str et un format de chaîne de format. La fonction STR_TO_DATE () renvoie une valeur DATETIME si la chaîne de format contient à la fois des parties de date et d'heure. Sinon, il renvoie une valeur DATE ou HEURE si la chaîne ne contient que des parties de date ou d'heure.

mysql> SELECT STR_TO_DATE('04/31/2004', '%m/%d/%Y');
+---------------------------------------------------------+
| STR_TO_DATE('04/31/2004', '%m/%d/%Y')                   |
+---------------------------------------------------------+
| 2004-04-31                                              |
+---------------------------------------------------------+
1 row in set (0.00 sec)

SUBDATE (date, unité expr INTERVAL) et SUBDATE (expr, jours)

Lorsqu'il est appelé avec la forme INTERVAL du deuxième argument, SUBDATE () est un synonyme de DATE_SUB (). Pour plus d'informations sur l'argument d'unité INTERVAL, consultez la discussion sur DATE_ADD ().

mysql> SELECT DATE_SUB('1998-01-02', INTERVAL 31 DAY);
+---------------------------------------------------------+
| DATE_SUB('1998-01-02', INTERVAL 31 DAY)                 |
+---------------------------------------------------------+
| 1997-12-02                                              |
+---------------------------------------------------------+
1 row in set (0.00 sec)

mysql> SELECT SUBDATE('1998-01-02', INTERVAL 31 DAY);
+---------------------------------------------------------+
| SUBDATE('1998-01-02', INTERVAL 31 DAY)                  |
+---------------------------------------------------------+
| 1997-12-02                                              |
+---------------------------------------------------------+
1 row in set (0.00 sec)

SOUS-TEMPS (expr1, expr2)

La fonction SUBTIME () renvoie expr1. expr2 exprimé sous forme de valeur au même format que expr1. La valeur expr1 est une heure ou une expression datetime, tandis que la valeur expr2 est une expression temporelle.

mysql> SELECT SUBTIME('1997-12-31 23:59:59.999999',
   -> '1 1:1:1.000002');
+---------------------------------------------------------+
| SUBTIME('1997-12-31 23:59:59.999999'...                 |
+---------------------------------------------------------+
| 1997-12-30 22:58:58.999997                              |
+---------------------------------------------------------+
1 row in set (0.00 sec)

SYSDATE ()

Renvoie la date et l'heure actuelles sous forme de valeur au format «AAAA-MM-JJ HH: MM: SS» ou AAAAMMJJHHMMSS, selon que la fonction est utilisée dans une chaîne ou dans un contexte numérique.

mysql> SELECT SYSDATE();
+---------------------------------------------------------+
| SYSDATE()                                               |
+---------------------------------------------------------+
| 2006-04-12 13:47:44                                     |
+---------------------------------------------------------+
1 row in set (0.00 sec)

TEMPS (expr)

Extrait la partie temps de l'expression time ou datetime expr et le renvoie sous forme de chaîne.

mysql> SELECT TIME('2003-12-31 01:02:03');
+---------------------------------------------------------+
| TIME('2003-12-31 01:02:03')                             |
+---------------------------------------------------------+
| 01:02:03                                                |
+---------------------------------------------------------+
1 row in set (0.00 sec)

TIMEDIFF (expr1, expr2)

La fonction TIMEDIFF () renvoie expr1. expr2 exprimée en valeur de temps. Ces valeurs expr1 et expr2 sont des expressions d'heure ou de date et d'heure, mais les deux doivent être du même type.

mysql> SELECT TIMEDIFF('1997-12-31 23:59:59.000001',
   -> '1997-12-30 01:01:01.000002');
+---------------------------------------------------------+
| TIMEDIFF('1997-12-31 23:59:59.000001'.....              |
+---------------------------------------------------------+
|  46:58:57.999999                                        |
+---------------------------------------------------------+
1 row in set (0.00 sec)

TIMESTAMP (expr), TIMESTAMP (expr1, expr2)

Avec un seul argument, cette fonction renvoie la date ou l'expression de date / heure expr sous forme de valeur de date / heure. Avec deux arguments, il ajoute l'expression d'heure expr2 à l'expression de date ou d'heureexpr1 et renvoie le résultat sous forme de valeur datetime.

mysql> SELECT TIMESTAMP('2003-12-31');
+---------------------------------------------------------+
| TIMESTAMP('2003-12-31')                                 |
+---------------------------------------------------------+
| 2003-12-31 00:00:00                                     |
+---------------------------------------------------------+
1 row in set (0.00 sec)

TIMESTAMPADD (unité, intervalle, exp_dateheure)

Cette fonction ajoute l'intervalle d'expression entier à l'expression de date ou d'heure datetime_expr. L'unité de l'intervalle est donnée par l'argument unité, qui doit être l'une des valeurs suivantes -

  • FRAC_SECOND
  • SECOND, MINUTE
  • HEURE, JOUR
  • WEEK
  • MONTH
  • QUARTIER ou
  • YEAR

La valeur unitaire peut être spécifiée à l'aide de l'un des mots-clés comme indiqué ou avec un préfixe SQL_TSI_.

Par exemple, DAY et SQL_TSI_DAY sont tous les deux autorisés.

mysql> SELECT TIMESTAMPADD(MINUTE,1,'2003-01-02');
+---------------------------------------------------------+
| TIMESTAMPADD(MINUTE,1,'2003-01-02')                     |
+---------------------------------------------------------+
| 2003-01-02 00:01:00                                     |
+---------------------------------------------------------+
1 row in set (0.00 sec)

TIMESTAMPDIFF (unité, datetime_expr1, datetime_expr2)

Renvoie la différence entière entre les expressions de date ou de date / heure datetime_expr1 et datetime_expr2. L'unité du résultat est donnée par l'argument unité. Les valeurs légales de l'unité sont les mêmes que celles répertoriées dans la description de la fonction TIMESTAMPADD ().

mysql> SELECT TIMESTAMPDIFF(MONTH,'2003-02-01','2003-05-01');
+---------------------------------------------------------+
| TIMESTAMPDIFF(MONTH,'2003-02-01','2003-05-01')          |
+---------------------------------------------------------+
| 3                                                       |
+---------------------------------------------------------+
1 row in set (0.00 sec)

TIME_FORMAT (heure, format)

Cette fonction est utilisée comme la fonction DATE_FORMAT (), mais la chaîne de format peut contenir des spécificateurs de format uniquement pour les heures, les minutes et les secondes.

Si la valeur de temps contient une partie d'heure supérieure à 23, le%H et %k Les spécificateurs de format d'heure produisent une valeur supérieure à la plage habituelle de 0 à 23. Les autres spécificateurs de format d'heure produisent la valeur d'heure modulo 12.

mysql> SELECT TIME_FORMAT('100:00:00', '%H %k %h %I %l');
+---------------------------------------------------------+
| TIME_FORMAT('100:00:00', '%H %k %h %I %l')              |
+---------------------------------------------------------+
| 100 100 04 04 4                                         |
+---------------------------------------------------------+
1 row in set (0.00 sec)

TIME_TO_SEC (heure)

Renvoie l'argument de temps converti en secondes.

mysql> SELECT TIME_TO_SEC('22:23:00');
+---------------------------------------------------------+
| TIME_TO_SEC('22:23:00')                                 |
+---------------------------------------------------------+
| 80580                                                   |
+---------------------------------------------------------+
1 row in set (0.00 sec)

La date d'aujourd'hui)

Étant donné une date, renvoie un numéro de jour (le nombre de jours depuis l'année 0).

mysql> SELECT TO_DAYS(950501);
+---------------------------------------------------------+
| TO_DAYS(950501)                                         |
+---------------------------------------------------------+
| 728779                                                  |
+---------------------------------------------------------+
1 row in set (0.00 sec)

UNIX_TIMESTAMP (), UNIX_TIMESTAMP (date)

Si elle est appelée sans argument, cette fonction renvoie un horodatage Unix (secondes depuis '1970-01-01 00:00:00' UTC) sous forme d'entier non signé. Si UNIX_TIMESTAMP () est appelé avec un argument de date, il renvoie la valeur de l'argument en secondes depuis '1970-01-01 00:00:00' UTC. date peut être une chaîne DATE, une chaîne DATETIME, un TIMESTAMP ou un nombre au format AAMMJJ ou AAAAMMJJ.

mysql> SELECT UNIX_TIMESTAMP();
+---------------------------------------------------------+
| UNIX_TIMESTAMP()                                        |
+---------------------------------------------------------+
| 882226357                                               |
+---------------------------------------------------------+
1 row in set (0.00 sec)

mysql> SELECT UNIX_TIMESTAMP('1997-10-04 22:23:00');
+---------------------------------------------------------+
| UNIX_TIMESTAMP('1997-10-04 22:23:00')                   |
+---------------------------------------------------------+
| 875996580                                               |
+---------------------------------------------------------+
1 row in set (0.00 sec)

UTC_DATE, UTC_DATE ()

Renvoie la date UTC actuelle sous forme de valeur au format «AAAA-MM-JJ» ou AAAAMMJJ, selon que la fonction est utilisée dans un contexte de chaîne ou numérique.

mysql> SELECT UTC_DATE(), UTC_DATE() + 0;
+---------------------------------------------------------+
| UTC_DATE(), UTC_DATE() + 0                              |
+---------------------------------------------------------+
| 2003-08-14, 20030814                                    |
+---------------------------------------------------------+
1 row in set (0.00 sec)

UTC_TIME, UTC_TIME ()

Renvoie l'heure UTC actuelle sous forme de valeur au format «HH: MM: SS» ou HHMMSS, selon que la fonction est utilisée dans un contexte de chaîne ou numérique.

mysql> SELECT UTC_TIME(), UTC_TIME() + 0;
+---------------------------------------------------------+
| UTC_TIME(), UTC_TIME() + 0                              |
+---------------------------------------------------------+
| 18:07:53, 180753                                        |
+---------------------------------------------------------+
1 row in set (0.00 sec)

UTC_TIMESTAMP, UTC_TIMESTAMP ()

Renvoie la date et l'heure UTC actuelles sous forme de valeur au format «AAAA-MM-JJ HH: MM: SS» ou au format AAAAMMJJHHMMSS, selon que la fonction est utilisée dans une chaîne ou dans un contexte numérique.

mysql> SELECT UTC_TIMESTAMP(), UTC_TIMESTAMP() + 0;
+---------------------------------------------------------+
| UTC_TIMESTAMP(), UTC_TIMESTAMP() + 0                    |
+---------------------------------------------------------+
| 2003-08-14 18:08:04, 20030814180804                     |
+---------------------------------------------------------+
1 row in set (0.00 sec)

SEMAINE (date [, mode])

Cette fonction renvoie le numéro de semaine pour la date. La forme à deux arguments de WEEK () vous permet de spécifier si la semaine commence un dimanche ou un lundi et si la valeur de retour doit être comprise entre 0 et 53 ou entre 1 et 53. Si l'argument mode est omis, la valeur de la variable système default_week_format est utilisée

Mode Premier jour de la semaine Intervalle La semaine 1 est la première semaine.
0 dimanche 0-53 avec un dimanche cette année
1 Lundi 0-53 avec plus de 3 jours cette année
2 dimanche 1-53 avec un dimanche cette année
3 Lundi 1-53 avec plus de 3 jours cette année
4 dimanche 0-53 avec plus de 3 jours cette année
5 Lundi 0-53 avec un lundi cette année
6 dimanche 1-53 avec plus de 3 jours cette année
sept Lundi 1-53 avec un lundi cette année
mysql> SELECT WEEK('1998-02-20');
+---------------------------------------------------------+
| WEEK('1998-02-20')                                      |
+---------------------------------------------------------+
| 7                                                       |
+---------------------------------------------------------+
1 row in set (0.00 sec)

SEMAINE (date)

Renvoie l'index des jours de la semaine pour la date (0 = lundi, 1 = mardi,. 6 = dimanche).

mysql> SELECT WEEKDAY('1998-02-03 22:23:00');
+---------------------------------------------------------+
| WEEKDAY('1998-02-03 22:23:00')                          |
+---------------------------------------------------------+
| 1                                                       |
+---------------------------------------------------------+
1 row in set (0.00 sec)

WEEKOFYEAR (date)

Renvoie la semaine calendaire de la date sous la forme d'un nombre compris entre 1 et 53. WEEKOFYEAR () est une fonction de compatibilité équivalente à WEEK (date, 3).

mysql> SELECT WEEKOFYEAR('1998-02-20');
+---------------------------------------------------------+
| WEEKOFYEAR('1998-02-20')                                |
+---------------------------------------------------------+
| 8                                                       |
+---------------------------------------------------------+
1 row in set (0.00 sec)

ANNÉE (date)

Renvoie l'année pour la date, comprise entre 1 000 et 9 999, ou 0 pour le zéro. Date.

mysql> SELECT YEAR('98-02-03');
+---------------------------------------------------------+
| YEAR('98-02-03')                                        |
+---------------------------------------------------------+
| 1998                                                    |
+---------------------------------------------------------+
1 row in set (0.00 sec)

SEMAINE ANNÉE (date), SEMAINE ANNÉE (date, mode)

Renvoie l'année et la semaine d'une date. L'argument mode fonctionne exactement comme l'argument mode de la fonction WEEK (). L'année dans le résultat peut être différente de l'année dans l'argument de date pour la première et la dernière semaine de l'année.

mysql> SELECT YEARWEEK('1987-01-01');
+---------------------------------------------------------+
| YEAR('98-02-03')YEARWEEK('1987-01-01')                  |
+---------------------------------------------------------+
| 198653                                                  |
+---------------------------------------------------------+
1 row in set (0.00 sec)

Note - Le numéro de semaine est différent de ce que la fonction WEEK () renverrait (0) pour les arguments optionnels 0 ou 1, car WEEK () renvoie alors la semaine dans le contexte de l'année donnée.