MySQL - Funzioni di data e ora

Sr.No. Nome e descrizione
1 AGGIUNGI ()

Aggiunge le date

2 ADDTIME ()

Aggiunge tempo

3 CONVERT_TZ ()

Converte da un fuso orario a un altro

4 CURDATE ()

Restituisce la data corrente

5 CURRENT_DATE (), CURRENT_DATE

Sinonimi per CURDATE ()

6 CURRENT_TIME (), CURRENT_TIME

Sinonimi per CURTIME ()

7 CURRENT_TIMESTAMP (), CURRENT_TIMESTAMP

Sinonimi per NOW ()

8 CURTIME ()

Restituisce l'ora corrente

9 DATE_ADD ()

Aggiunge due date

10 FORMATO DATA()

Formatta la data come specificato

11 DATE_SUB ()

Sottrae due date

12 DATA()

Estrae la parte relativa alla data di un'espressione data o datetime

13 DATEDIFF ()

Sottrae due date

14 GIORNO()

Sinonimo di DAYOFMONTH ()

15 DAYNAME ()

Restituisce il nome del giorno della settimana

16 DAYOFMONTH ()

Restituisce il giorno del mese (1-31)

17 GIORNO DELLA SETTIMANA()

Restituisce l'indice del giorno della settimana dell'argomento

18 DAYOFYEAR ()

Restituisce il giorno dell'anno (1-366)

19 ESTRATTO

Estrae parte di una data

20 FROM_DAYS ()

Converte un numero di giorno in una data

21 FROM_UNIXTIME ()

I formati data come un timestamp UNIX

22 ORA()

Estrae l'ora

23 ULTIMO GIORNO

Restituisce l'ultimo giorno del mese per l'argomento

24 LOCALTIME (), LOCALTIME

Sinonimo di ORA ()

25 LOCALTIMESTAMP, LOCALTIMESTAMP ()

Sinonimo di ORA ()

26 MAKEDATE ()

Crea una data a partire dall'anno e dal giorno dell'anno

27 MAKETIME

MAKETIME ()

28 MICROSECONDO ()

Restituisce i microsecondi dall'argomento

29 MINUTE ()

Restituisce il minuto dall'argomento

30 MESE()

Restituisce il mese dalla data trascorsa

31 MONTHNAME ()

Restituisce il nome del mese

32 ADESSO()

Restituisce la data e l'ora correnti

33 PERIOD_ADD ()

Aggiunge un periodo a un anno-mese

34 PERIOD_DIFF ()

Restituisce il numero di mesi tra i periodi

35 TRIMESTRE()

Restituisce il trimestre da un argomento data

36 SEC_TO_TIME ()

Converte i secondi nel formato "HH: MM: SS"

37 SECONDO()

Restituisce il secondo (0-59)

38 STR_TO_DATE ()

Converte una stringa in una data

39 SUBDATE ()

Quando invocato con tre argomenti un sinonimo per DATE_SUB ()

40 SUBTIME ()

Sottrae i tempi

41 SYSDATE ()

Restituisce l'ora in cui viene eseguita la funzione

42 FORMATO ORARIO()

Formati come tempo

43 TIME_TO_SEC ()

Restituisce l'argomento convertito in secondi

44 TEMPO()

Estrae la parte di tempo dell'espressione trascorsa

45 TIMEDIFF ()

Sottrae il tempo

46 TIMESTAMP ()

Con un singolo argomento, questa funzione restituisce l'espressione date o datetime. Con due argomenti, la somma degli argomenti

47 TIMESTAMPADD ()

Aggiunge un intervallo a un'espressione datetime

48 TIMESTAMPDIFF ()

Sottrae un intervallo da un'espressione datetime

49 DI OGGI()

Restituisce l'argomento della data convertito in giorni

50 UNIX_TIMESTAMP ()

Restituisce un timestamp UNIX

51 UTC_DATE ()

Restituisce la data UTC corrente

52 UTC_TIME ()

Restituisce l'ora UTC corrente

53 UTC_TIMESTAMP ()

Restituisce la data e l'ora UTC correnti

54 SETTIMANA()

Restituisce il numero della settimana

55 WEEKDAY ()

Restituisce l'indice del giorno della settimana

56 WEEKOFYEAR ()

Restituisce la settimana di calendario della data (1-53)

57 ANNO()

Restituisce l'anno

58 YEARWEEK ()

Restituisce l'anno e la settimana

ADDDATE (data, INTERVAL expr unit), ADDDATE (expr, giorni)

Quando viene richiamato con la forma INTERVAL del secondo argomento, ADDDATE () è un sinonimo di DATE_ADD (). La funzione correlata SUBDATE () è sinonimo di DATE_SUB (). Per informazioni sull'argomento unit INTERVAL, vedere la discussione per 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)

Quando invocato con la forma days del secondo argomento, MySQL lo considera come un numero intero di giorni da aggiungere a 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 () aggiunge expr2 a expr1 e restituisce il risultato. expr1 è un'espressione time o datetime e expr2 è un'espressione time.

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, to_tz)

Questo converte un valore datetime dt dal fuso orario fornito da from_tz al fuso orario fornito da to_tz e restituisce il valore risultante. Questa funzione restituisce NULL se gli argomenti non sono validi.

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 ()

Restituisce la data corrente come valore nel formato "AAAA-MM-GG" o AAAAMMGG, a seconda che la funzione venga utilizzata in una stringa o in un contesto numerico.

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 e CURRENT_DATE ()

CURRENT_DATE e CURRENT_DATE () sono sinonimi di CURDATE ()

CURTIME ()

Restituisce l'ora corrente come valore nel formato "HH: MM: SS" o HHMMSS, a seconda che la funzione venga utilizzata in una stringa o in un contesto numerico. Il valore è espresso nel fuso orario corrente.

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 e CURRENT_TIME ()

CURRENT_TIME e CURRENT_TIME () sono sinonimi di CURTIME ().

CURRENT_TIMESTAMP e CURRENT_TIMESTAMP ()

CURRENT_TIMESTAMP e CURRENT_TIMESTAMP () sono sinonimi di NOW ().

DATE (expr)

Estrae la parte relativa alla data dell'espressione data o 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 () restituisce expr1. expr2 espresso come valore in giorni da una data all'altra. expr1 ed expr2 sono espressioni di data o data e ora. Nel calcolo vengono utilizzate solo le parti della data dei valori.

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 (data, unità di espressione INTERVAL), DATE_SUB (data, unità di espressione INTERVAL)

Queste funzioni eseguono l'aritmetica della data. data è un valore DATETIME o DATE che specifica la data di inizio. expr è un'espressione che specifica il valore dell'intervallo da aggiungere o sottrarre dalla data di inizio. expr è una stringa; può iniziare con un "-" per gli intervalli negativi. unità è una parola chiave che indica le unità in cui l'espressione deve essere interpretata.

La parola chiave INTERVAL e l'identificatore di unità non fanno distinzione tra maiuscole e minuscole.

La tabella seguente mostra la forma prevista dell'argomento expr per ogni valore unitario;

unità Value ExpectedexprFormat
MICROSECONDO MICROSECONDI
SECONDO SECONDI
MINUTO MINUTI
ORA ORE
GIORNO GIORNI
SETTIMANA SETTIMANE
MESE MESI
TRIMESTRE QUARTI
ANNO ANNI
SECOND_MICROSECOND "SECONDS.MICROSECONDS"
MINUTE_MICROSECOND "MINUTES.MICROSECONDS"
MINUTE_SECOND "MINUTES: SECONDS"
HOUR_MICROSECOND "HOURS.MICROSECONDS"
HOUR_SECOND "HOURS: MINUTES: SECONDS"
HOUR_MINUTE "HOURS: MINUTES"
DAY_MICROSECOND "DAYS.MICROSECONDS"
DAY_SECOND "DAYS HOURS: MINUTES: SECONDS"
DAY_MINUTE "DAYS HOURS: MINUTES"
DAY_HOUR "DAYS HOURS"
ANNO MESE "ANNI-MESI"

I valori QUARTER e WEEK sono disponibili a partire da MySQL 5.0.0.

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 (data, formato)

Formatta il valore della data in base alla stringa di formato.

I seguenti specificatori possono essere utilizzati nella stringa di formato. Il .%. il carattere è richiesto prima dei caratteri dell'identificatore di formato.

S. No. Specifier e descrizione
1

%a

Nome abbreviato del giorno della settimana (Dom .. Sab)

2

%b

Nome abbreviato del mese (gennaio-dicembre)

3

%c

Mese, numerico (0..12)

4

%D

Giorno del mese con suffisso inglese (0 °, 1 °, 2 °, 3 °,.)

5

%d

Giorno del mese, numerico (00..31)

6

%e

Giorno del mese, numerico (0..31)

7

%f

Microsecondi (000000..999999)

8

%H

Ora (00..23)

9

%h

Ora (01..12)

10

%I

Ora (01..12)

11

%i

Minuti, numerici (00..59)

12

%j

Giorno dell'anno (001..366)

13

%k

Ora (0..23)

14

%l

Ora (1..12)

15

%M

Nome del mese (gennaio .. dicembre)

16

%m

Mese, numerico (00..12)

17

%p

Antimeridiane o pomeridiane

18

%r

Ora, 12 ore (hh: mm: ss seguito da AM o PM)

19

%S

Secondi (00..59)

20

%s

Secondi (00..59)

21

%T

Ora, 24 ore (hh: mm: ss)

22

%U

Settimana (00..53), dove la domenica è il primo giorno della settimana

23

%u

Settimana (00..53), dove lunedì è il primo giorno della settimana

24

%V

Settimana (01..53), dove la domenica è il primo giorno della settimana; utilizzato con% X

25

%v

Settimana (01..53), dove lunedì è il primo giorno della settimana; utilizzato con% x

26

%W

Nome del giorno della settimana (domenica .. sabato)

27

%w

Giorno della settimana (0 = domenica..6 = sabato)

28

%X

Anno per la settimana in cui la domenica è il primo giorno della settimana, numerico, quattro cifre; utilizzato con% V

29

%x

Anno della settimana, dove lunedì è il primo giorno della settimana, numerico, quattro cifre; utilizzato con% v

30

%Y

Anno, numerico, quattro cifre

31

%y

Anno, numerico (due cifre)

32

%

Un letterale.%. personaggio

33

%x

x, per any.x. non elencato sopra

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 (data, unità espress INTERVAL)

È simile alla funzione DATE_ADD ().

GIORNO (data)

DAY () è un sinonimo di DAYOFMONTH ().

DAYNAME (data)

Restituisce il nome del giorno della settimana per la data.

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

DAYOFMONTH (data)

Restituisce il giorno del mese per la data, nell'intervallo da 0 a 31.

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

DAYOFWEEK (data)

Restituisce l'indice del giorno della settimana per la data (1 = domenica, 2 = lunedì,., 7 = sabato). Questi valori di indice corrispondono allo standard ODBC.

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

DAYOFYEAR (data)

Restituisce il giorno dell'anno per la data, nell'intervallo da 1 a 366.

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

ESTRATTO (unità dalla data)

La funzione EXTRACT () utilizza gli stessi tipi di identificatori di unità di DATE_ADD () o DATE_SUB (), ma estrae parti dalla data anziché eseguire operazioni aritmetiche di data.

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)

Dato un numero di giorno N, restituisce un valore DATE.

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

Usa FROM_DAYS () con cautela sulle vecchie date. Non è destinato all'uso con valori che precedono l'avvento del calendario gregoriano (1582).

FROM_UNIXTIME (unix_timestamp)

FROM_UNIXTIME (unix_timestamp, formato)

Restituisce una rappresentazione dell'argomento unix_timestamp come valore in formato "AAAA-MM-GG HH: MM: SS" o AAAAMMGGHHMMSS, a seconda che la funzione venga utilizzata in una stringa o in un contesto numerico. Il valore è espresso nel fuso orario corrente. unix_timestamp è un valore di timestamp interno come quello prodotto dalla funzione UNIX_TIMESTAMP ().

Se viene fornito il formato, il risultato viene formattato in base alla stringa di formato, che viene utilizzata nello stesso modo elencato nella voce per la funzione DATE_FORMAT ().

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

HOUR (ora)

Restituisce l'ora per l'ora. L'intervallo del valore restituito è compreso tra 0 e 23 per i valori dell'ora. Tuttavia, l'intervallo di valori TIME è in realtà molto più ampio, quindi HOUR può restituire valori maggiori di 23.

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

LAST_DAY (data)

Accetta una data o un valore datetime e restituisce il valore corrispondente per l'ultimo giorno del mese. Restituisce NULL se l'argomento non è valido.

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

LOCALTIME e LOCALTIME ()

LOCALTIME e LOCALTIME () sono sinonimi di NOW ().

LOCALTIMESTAMP e LOCALTIMESTAMP ()

LOCALTIMESTAMP e LOCALTIMESTAMP () sono sinonimi di NOW ().

MAKEDATE (anno, giorno dell'anno)

Restituisce una data, un dato anno e valori del giorno dell'anno. dayofyear deve essere maggiore di 0 o il risultato è 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 (ora, minuto, secondo)

Restituisce un valore temporale calcolato dagli argomenti ora, minuto e secondo.

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

MICROSECOND (espr)

Restituisce i microsecondi dall'espressione time o datetime expr come un numero compreso tra 0 e 999999.

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

MINUTE (ora)

Restituisce i minuti per l'ora, nell'intervallo da 0 a 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)

MESE (data)

Restituisce il mese per la data, nell'intervallo da 0 a 12.

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

MONTHNAME (data)

Restituisce il nome completo del mese per la data.

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

ADESSO()

Restituisce la data e l'ora correnti come valore nel formato "AAAA-MM-GG HH: MM: SS" o AAAAMMGGHHMMSS, a seconda che la funzione venga utilizzata in una stringa o in un contesto numerico. Il valore è espresso nel fuso orario corrente.

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

PERIOD_ADD (P, N)

Aggiunge N mesi al periodo P (nel formato AAMM o AAAAMM). Restituisce un valore nel formato AAAAMM. Notare che l'argomento del periodo P non è un valore di data.

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

PERIOD_DIFF (P1, P2)

Restituisce il numero di mesi tra i periodi P1 e P2. P1 e P2 devono essere nel formato YYMM o YYYYMM. Notare che gli argomenti del periodo P1 e P2 non sono valori di data.

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

QUARTER (data)

Restituisce il trimestre dell'anno per la data, nell'intervallo da 1 a 4.

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

Seconda volta)

Restituisce il secondo per l'ora, nell'intervallo da 0 a 59.

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

SEC_TO_TIME (secondi)

Restituisce l'argomento dei secondi, convertito in ore, minuti e secondi, come valore in formato "HH: MM: SS" o HHMMSS, a seconda che la funzione venga utilizzata in una stringa o in un contesto numerico.

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

STR_TO_DATE (str, formato)

Questo è l'inverso della funzione DATE_FORMAT (). Richiede una stringa str e un formato stringa di formato. STR_TO_DATE () restituisce un valore DATETIME se la stringa di formato contiene entrambe le parti di data e ora, o un valore DATE o TIME se la stringa contiene solo parti di data o ora.

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 (data, INTERVAL expr unit) e SUBDATE (expr, giorni)

Quando viene richiamato con la forma INTERVAL del secondo argomento, SUBDATE () è un sinonimo di DATE_SUB (). Per informazioni sull'argomento unit INTERVAL, vedere la discussione per 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)

SUBTIME (expr1, expr2)

SUBTIME () restituisce expr1. expr2 espresso come valore nello stesso formato di expr1. expr1 è un'espressione time o datetime e expr2 è un'ora.

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 ()

Restituisce la data e l'ora correnti come valore nel formato "AAAA-MM-GG HH: MM: SS" o AAAAMMGGHHMMSS, a seconda che la funzione venga utilizzata in una stringa o in un contesto numerico.

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

TIME (expr)

Estrae la parte temporale dell'espressione time o datetime expr e la restituisce come stringa.

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)

TIMEDIFF () restituisce expr1. expr2 espresso come valore temporale. expr1 ed expr2 sono espressioni di ora o data e ora, ma devono essere entrambe dello stesso tipo.

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)

Con un singolo argomento, questa funzione restituisce la data o l'espressione datetime expr come valore datetime. Con due argomenti, aggiunge l'espressione time expr2 all'espressione date o datetime expr1 e restituisce il risultato come valore 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à, intervallo, datetime_expr)

Aggiunge l'intervallo dell'espressione intera all'espressione data o datetime datetime_expr. L'unità dell'intervallo è data dall'argomento unit, che dovrebbe essere uno dei seguenti valori: FRAC_SECOND, SECOND, MINUTE, HOUR, DAY, WEEK, MONTH, QUARTER o YEAR.

Il valore unitario può essere specificato utilizzando una delle parole chiave come mostrato o con un prefisso SQL_TSI_. Ad esempio, DAY e SQL_TSI_DAY sono entrambi legali.

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)

Restituisce la differenza intera tra le espressioni date o datetime datetime_expr1 e datetime_expr2. L'unità per il risultato è data dall'argomento unit. I valori legali per unit sono gli stessi elencati nella descrizione della funzione 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 (ora, formato)

Viene utilizzata come la funzione DATE_FORMAT (), ma la stringa di formato può contenere specificatori di formato solo per ore, minuti e secondi.

Se il valore dell'ora contiene una parte dell'ora maggiore di 23, gli identificatori di formato% H e% k ora producono un valore maggiore del normale intervallo 0..23. Gli altri specificatori di formato dell'ora producono il valore dell'ora 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 (ora)

Restituisce l'argomento tempo, convertito in secondi.

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

Data odierna)

Data una data, restituisce un numero di giorno (il numero di giorni dall'anno 0).

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

UNIX_TIMESTAMP (), UNIX_TIMESTAMP (data)

Se chiamato senza argomenti, restituisce un timestamp UNIX (secondi da '1970-01-01 00:00:00' UTC) come numero intero senza segno. Se UNIX_TIMESTAMP () viene chiamato con un argomento data, restituisce il valore dell'argomento in secondi da '1970-01-01 00:00:00' UTC. data può essere una stringa DATE, una stringa DATETIME, TIMESTAMP o un numero nel formato AAMMGG o AAAAMMGG.

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 ()

Restituisce la data UTC corrente come valore nel formato "AAAA-MM-GG" o AAAAMMGG, a seconda che la funzione venga utilizzata in una stringa o in un contesto numerico.

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 ()

Restituisce l'ora UTC corrente come valore nel formato "HH: MM: SS" o HHMMSS, a seconda che la funzione venga utilizzata in una stringa o in un contesto numerico.

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 ()

Restituisce la data e l'ora UTC correnti come valore nel formato "AAAA-MM-GG HH: MM: SS" o AAAAMMGGHHMMSS, a seconda che la funzione venga utilizzata in una stringa o in un contesto numerico.

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)

SETTIMANA (data [, modalità])

Questa funzione restituisce il numero della settimana per la data. La forma a due argomenti di WEEK () consente di specificare se la settimana inizia di domenica o lunedì e se il valore restituito deve essere compreso tra 0 e 53 o da 1 a 53. Se l'argomento mode viene omesso, il valore della variabile di sistema default_week_format viene utilizzata

Modalità Primo giorno della settimana Gamma La settimana 1 è la prima settimana.
0 Domenica 0-53 con una domenica di quest'anno
1 Lunedi 0-53 con più di 3 giorni quest'anno
2 Domenica 1-53 con una domenica di quest'anno
3 Lunedi 1-53 con più di 3 giorni quest'anno
4 Domenica 0-53 con più di 3 giorni quest'anno
5 Lunedi 0-53 con un lunedì di quest'anno
6 Domenica 1-53 con più di 3 giorni quest'anno
7 Lunedi 1-53 con un lunedì di quest'anno
mysql> SELECT WEEK('1998-02-20');
+---------------------------------------------------------+
| WEEK('1998-02-20')                                      |
+---------------------------------------------------------+
| 7                                                       |
+---------------------------------------------------------+
1 row in set (0.00 sec)

WEEKDAY (data)

Restituisce l'indice del giorno della settimana per la data (0 = lunedì, 1 = martedì,. 6 = domenica).

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 (data)

Restituisce la settimana di calendario della data come un numero compreso tra 1 e 53. WEEKOFYEAR () è una funzione di compatibilità equivalente a WEEK (date, 3).

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

ANNO (data)

Restituisce l'anno per la data, nell'intervallo da 1000 a 9999 o 0 per lo zero. Data.

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

YEARWEEK (data), YEARWEEK (data, modalità)

Restituisce anno e settimana per una data. L'argomento mode funziona esattamente come l'argomento mode di WEEK (). L'anno nel risultato può essere diverso dall'anno nell'argomento data per la prima e l'ultima settimana dell'anno.

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

Si noti che il numero della settimana è diverso da quello che la funzione WEEK () restituirebbe (0) per gli argomenti opzionali 0 o 1, poiché WEEK () restituisce quindi la settimana nel contesto dell'anno specificato.

Per ulteriori informazioni, consultare il sito Web ufficiale di MySQL - Funzioni di data e ora