Introduzione
MySQL viene fornito con molte funzioni integrate che consentono di manipolare i dati. Queste funzioni sono raggruppate in categorie:funzioni di data, funzioni di stringa, funzioni matematiche e altre.
Le funzioni di data offrono numerose opzioni su come modificare, calcolare e convertire le espressioni di data, ora e data e ora in MySQL.
In questo tutorial imparerai le funzioni di data e ora MySQL e come funzionano, su esempi pratici.
Funzioni relative alla data
CURDATE O CURRENT_DATE
Restituisci la data corrente nel formato "AAAA-MM-GG" o "AAAAMMGG" con il CURDATE
OPPURE CURRENT_DATE
comando.
La sintassi di base:
CURDATE();
Ad esempio, se esegui:
SELECT CURDATE();
MySQL risponde con la data corrente nel formato:
2021-01-17
DATA
Restituisce la data da un'espressione datetime utilizzando il DATE
comando.
La sintassi di base:
DATE(datetime);
Ad esempio, se esegui:
SELECT DATE('2021-01-17 10:12:16');
L'output è:
2021-01-17
DATE_ADD o ADDDATE
Aggiungi un valore di data/ora a un'espressione di data con DATE_ADD
o ADDDATE
funzione.
La sintassi di base:
DATE_ADD(date, INTERVAL value unit);
Sostituisci data con l'espressione di data a cui vuoi aggiungere un'ora/data. L'unità di valore è l'ora/data che vuoi aggiungere. Deve essere espresso in un valore numerico insieme all'unità del valore.
L'unità può essere:
- SECONDA
- MINUTO
- ORA
- GIORNO
- SETTIMANA
- MESE
- TRIMESTRE
- ANNO
- SECOND_MICROSECONDO
- MINUTE_MICROSECONDO
- MINUTE_SECOND
- ORA_MICROSECONDO
- ORA_SECONDA
- ORA_MINUTO
- DAY_MICROSECONDO
- GIORNO_SECONDO
- DAY_MINUTE
- DAY_HOUR
- ANNO_MESE
Ad esempio, se esegui:
SELECT DATE_ADD('2021-01-17 07:14:21', INTERVAL 20 MINUTE);
L'output restituisce il risultato:
2021-01-17 07:34:21
FORMATO_DATA
Formatta una data utilizzando DATE_FORMAT
.
La sintassi di base:
DATE_FORMAT(date, format);
La data è l'espressione della data che vuoi riformattare, mentre il formato è una combinazione dei seguenti specificatori:
Ad esempio, se esegui:
SELECT DATE_FORMAT('2021-01-17', '%W %M %Y');
L'output mostra il risultato:
Sunday January 2021
DATE_SUB o SUBDATE
Sottrarre un valore di data/ora a un'espressione di data con il DATE_SUB
o SUBDATE
funzione.
La sintassi di base:
DATE_SUB(date, INTERVAL value unit);
Sostituisci data con l'espressione di data da cui vuoi sottrarre. L'unità di valore è l'ora/data che vuoi sottrarre. Deve essere espresso in valore numerico insieme all'unità del valore.
Trova un elenco di tipi di unità nella sezione DATE_ADD.
Ad esempio, se esegui:
SELECT DATE_SUB('2021-01-17 07:14:21', INTERVAL 1 HOUR);
L'output restituisce il risultato:
2021-01-17 06:14:21
DATEDIFF
Restituisce il numero di giorni tra due espressioni di data con il DATEDIFF
funzione.
La sintassi di base:
DATEDIFF(date1,date2);
Ad esempio:
SELECT DATEDIFF('2021-01-23','2021-01-14');
Restituisce il risultato:
9
ESTRATTO
Per estrarre parte di un'espressione data/ora, utilizza EXTRACT
funzione.
La sintassi di base:
EXTRACT(unit FROM date);
Nel comando, devi specificare quale unità vuoi estrarre dalla data specificata .
Trova un elenco di unità che puoi utilizzare nella descrizione DATE_ADD.
Ad esempio, quando esegui:
SELECT EXTRACT(DAY FROM '2021-01-26');
Ottieni il risultato:
26
GET_FORMAT
Restituisce una stringa di formato (una combinazione di specificatori) come specificato nell'argomento con GET_FORMAT
. Questa funzione viene spesso utilizzata con DATE_FORMAT
.
La sintassi di base:
GET_FORMAT(DATE/TIME/DATETIME,format)
Utilizzare questa funzione con le espressioni di data, ora e data e ora.
Il formato può essere:
- 'EUR'
- 'Stati Uniti'
- 'JIS'
- 'ISO'
- 'INTERNO'
C'è un numero finito di risultati che puoi ottenere usando il GET_FORMAT
funzione. Di seguito troverai un elenco di tutte le chiamate di funzione e dei loro risultati.
Ad esempio, puoi combinare la funzione con DATE_FORMAT
, come nell'esempio seguente:
SELECT DATE_FORMAT('2021-01-26', GET_FORMAT(DATE,'EUR'));
Dove il risultato è:
26.01.2021
MAKEDATE
Restituisci un'espressione di data da un anno e un giorno dell'anno specificati utilizzando il MAKEDATE
funzione.
La sintassi di base:
MAKEDATE(year,day);
Ad esempio, se esegui:
SELECT MAKEDATE(2021,34);
L'output mostra il risultato:
2021-02-03
STR_TO_DATE
Formatta una data da una stringa con STR_TO_DATE
e restituire un valore di data/ora.
La sintassi di base:
STR_TO_DATE(string, format);
La stringa è ciò che vuoi riformattare, mentre il formato è una combinazione di specificatori che descrivono ogni elemento della stringa .
Puoi trovare un elenco di specificatori e il loro significato nella sezione DATE_FORMAT.
Ad esempio, se esegui:
SELECT STR_TO_DATE('January,25,2021', '%M %e %Y');
L'output mostra:
2021-01-25
SYSDATE
Per restituire la data e l'ora correnti nel formato “AAAA-MM-GG hh:mm:ss” o “AAAAMMGGDHHMMSS.uuuuuu”, utilizzare il SYSDATE
funzione.
La sintassi di base:
SYSDATE();
Puoi aggiungere il fsp
argomento per includere la precisione frazionaria al secondo (0-6). In tal caso, la sintassi è SYSDATE(fsp);
.
Il comando mostrato di seguito:
SELECT SYSDATE();
In questo momento dà il risultato:
2021-01-25 20:21:04
DATA_UTC
Restituisce il valore della data dell'ora UTC (Coordinated Universal Time) corrente nel formato "AAAA-MM-GG" o "AAAAMMGG" con il UTC_DATE
funzione.
La sintassi di base:
UTC_DATE();
Ad esempio, eseguendo il comando seguente:
SELECT UTC_DATE();
Restituisce la data corrente che è:
2021-01-25
Funzioni relative al tempo
AGGIUNGERE TEMPO
Aggiungi un intervallo di tempo a un'espressione data/ora specificata utilizzando ADDTIME
.
La sintassi di base:
ADDTIME(datetime, timevalue)
Ad esempio, se esegui:
SELECT ADDTIME('2021-01-25 08:13:11.000021', '3:14:32.000006');
Ottieni il risultato:
2021-01-25 11:27:43.000027
CONVERT_TZ
Converti un'espressione ora/data/ora da un fuso orario a un altro utilizzando il ADDTIME
funzione.
La sintassi di base:
CONVERT_TZ(datetime, from_timezone,to_timezone)
Ad esempio, quando esegui:
SELECT CONVERT_TZ('2021-01-25 10:12:00','+00:00','+10:00');
MySQL converte la data e l'ora specificata in +10:00 fuso orario:
2021-01-25 20:12:00
CURTIME o CURRENT_TIME
Restituisci l'ora corrente utilizzando il CURTIME
o CURRENT_TIME
funzione. Il risultato restituisce l'ora nel formato "hh:mm:ss" o "hhmmss".
La sintassi di base:
CURTIME();
Puoi includere la precisione frazionaria al secondo (da 0 a 6) aggiungendo il fsp
argomento.
Ad esempio, il comando seguente mostra l'ora corrente con una precisione di tre secondi frazionari:
CURTIME(3);
L'output risponde con il risultato:
15:19:07.340
ORA
Restituisci l'ora dell'ora/data/ora specificata con HOUR
funzione.
La sintassi di base:
TIME(datetime);
Ad esempio, se esegui:
SELECT HOUR('08:40:07');
Il risultato è:
8
FARE TEMPO
Restituisce un'espressione di tempo dai valori di ora, minuti e secondi specificati utilizzando il MAKETIME
funzione.
La sintassi di base:
MAKETIME(hour, minute, second);
Ad esempio, puoi eseguire:
SELECT MAKETIME(09,25,00);
Dove viene visualizzato l'output:
09:25:00
MICROSECONDI
Restituisce i microsecondi dell'espressione ora/data/ora specificata con MICROSECOND
.
La sintassi di base:
MICROSECOND(datetime);
Ad esempio, puoi eseguire:
SELECT MICROSECOND('2021-01-21 10:23:44.000040');
Dove il risultato è:
40
MINUTO
Restituisce i minuti dell'espressione ora/data/ora specificata utilizzando il MINUTE
funzione.
La sintassi di base:
MINUTE(datetime);
Ad esempio, se esegui il comando:
SELECT MINUTE('10:23:44');
Il risultato è:
23
SEC_TO_TIME
Restituisce un valore di tempo da un valore di secondi specificato con il SEC_TO_TIME
funzione.
La sintassi di base:
SEC_TO_TIME(seconds);
Ad esempio, se esegui il comando:
SELECT SEC_TO_TIME(8897);
L'output è:
02:28:17
SOTTOTEMPO
Sottrarre un valore di tempo da un'espressione ora/data/ora utilizzando il SUBTIME
funzione.
La sintassi di base:
SUBTIME(datetime,timevalue);
Ad esempio, quando esegui:
SELECT SUBTIME('2021-01-21 21:24:00','2:20:1');
L'output è:
2021-01-21 19:03:59
TEMPO
Per restituire il valore dell'ora da un'espressione datetime, utilizza TIME
funzione.
La sintassi di base:
TIME(datetime);
Ad esempio:
SELECT TIME('2021-01-22 13:38:10');
Dà il risultato:
13:38:10
FORMATO_ORA
Formatta un valore di tempo nel formato specificato con TIME_FORMAT
.
La sintassi di base:
TIME_FORMAT(time,format);
Il formato è una combinazione di specificatori. Puoi trovare un elenco di tutti gli identificatori e il loro significato nella descrizione della funzione DATE_FORMAT.
Ad esempio, eseguendo:
SELECT TIME_FORMAT('13:45:10','%h %i %s %p');
Ottieni l'output:
01 45 10 PM
TIME_TO_SEC
Per restituire il valore del tempo convertito in secondi, utilizza il TIME_TO_SEC
.
La sintassi di base:
TIME_TO_SEC(timevalue);
Ad esempio, quando esegui:
SELECT TIME_TO_SEC('13:48:05');
Il risultato è:
49685
TIMEDIFF
Calcola la differenza tra due espressioni ora/data/ora con il TIMEDIFF
funzione. In questo caso, il risultato è sempre in valore temporale.
La sintassi di base:
TIMEDIFF(datetime1,datetime2);
Ad esempio, quando esegui:
SELECT TIMEDIFF('2021-01-15 11:10:17','2021-01-05 11:10:16');
L'output restituisce:
240:00:01
TO_SECONDI
Per convertire un'espressione data/ora in secondi, usa la funzione TO_SECONDS
. Il risultato è il numero di secondi tra 0 e la data/data/ora specificata.
La sintassi di base:
TO_SECONDS(datetime);
Ad esempio, se esegui il comando:
SELECT TO_SECONDS('2021-01-21 08:10:17');
Il risultato è:
63778435817
UTC_TIME
Restituisci il valore dell'ora UTC corrente con UTC_TIME
. Restituisce il valore dell'ora nel formato “HH:MM:SS” o “HHMMSS”.
La sintassi di base:
UTC_TIME();
Ad esempio, se esegui:
SELECT UTC_TIME();
Il risultato che ottieni a questo punto è:
19:45:21
Funzioni relative al timestamp
CURRENT_TIMESTAMP o LOCALTIMESTAMP
Per restituire la data e l'ora correnti, utilizza CURRENT_TIMESTAMP
o LOCALTIMESTAMP
. Il risultato viene restituito nel formato "AAAA-MM-GG HH-MM-SS" o "AAAAMMGGDHHMMSS.uuuuuu".
La sintassi di base:
CURRENT_TIMESTAMP();
Ad esempio, eseguendo:
SELECT CURRENT_TIMESTAMP();
Il risultato attuale è:
2021-01-25 19:53:55
DA_UNIXTIME
Restituisce un'espressione data/ora da un timestamp nel formato Unix con FROM_UNIXTIME
.
La sintassi di base:
FROM_UNIXTIME(unix_timestamp);
Se esegui il comando senza un argomento che specifichi il formato, restituisce il risultato nel formato "AAAA-MM-GG hh:mm:ss" o "AAAAMMGGhhmmss".
Ad esempio, se esegui:
SELECT FROM_UNIXTIME(1611231404);
Ottieni il risultato:
2021-01-21 12:16:44
TIMESTAMP
Per restituire un'espressione datetime da un valore date o datetime, utilizzare la funzione TIMESTAMP
. Se aggiungi due argomenti, l'output restituisce la somma degli argomenti.
La sintassi di base:
TIMESTAMP(datetime);
TIMESTAMP(datetime,time);
Ad esempio, quando esegui il comando:
SELECT TIMESTAMP('2021-01-13','30:50:00');
L'output mostra il risultato:
2021-01-14 06:50:00
TIMESTAMPADD
Aggiungi un valore di tempo a un'espressione data/ora utilizzando il TIMESTAMPADD
funzione.
La sintassi di base:
TIMESTAMPADD(unit,value,datetime);
L'unità può essere:
- FRAC_SECOND
- SECONDA
- MINUTO
- ORA
- GIORNO
- SETTIMANA
- MESE
- TRIMESTRE
- ANNO
Ad esempio, il comando seguente aggiunge 3 giorni alla data specificata:
SELECT TIMESTAMPADD(DAY,3,'2021-01-18');
Pertanto, l'output mostra:
2021-01-21
TIMESTAMPDIFF
Per calcolare la differenza tra due espressioni di data/ora, utilizza TIMESTAMPDIFF
. La funzione sottrae un valore datetime dall'altro nell'unità specificata.
La sintassi di base:
TIMESTAMPDIFF(unit,datetime1,datetime2);
Puoi trovare un elenco con diversi tipi di unità, controlla l'elenco nella sezione sopra.
Ad esempio, puoi calcolare la differenza in giorni tra le due seguenti date:
SELECT TIMESTAMPDIFF(DAY,3,'2021-01-18');
Dove il risultato è:
13
UNIX_TIMESTAMP
Restituisce un timestamp Unix da un'espressione data/ora con UNIX_TIMESTAMP
funzione. Il timestamp Unix rappresenta i secondi tra la data e l'ora specificata e "1970-01-01 00:00:00" UTC.
La sintassi di base:
UNIX_TIMESTAMP(datetime);
Ad esempio, eseguendo il comando seguente:
SELECT UNIX_TIMESTAMP('2021-01-25 17:33:00');
Dà il risultato:
1611595980
UTC_TIMESTAMP
Restituisci il valore di data e ora UTC corrente con UTC_TIMESTAMP
. Restituisce il valore data/ora nel formato "AAAA-MM-GG HH:MM:SS" o "AAAAMMGGHHMMSS.uuuuuu".
La sintassi di base:
UTC_TIMESTAMP(datetime);
Ad esempio, il comando:
SELECT UTC_TIMESTAMP();
Restituisce l'output nello stesso formato di quello seguente:
2021-01-25 23:18:06
Funzioni relative a giorno/settimana/mese/anno
GIORNO
Restituisce il giorno di un mese da un'espressione data/ora specificata con il DAY
funzione.
La sintassi di base:
DAY(datetime);
Se esegui il comando seguente:
SELECT DAY('2021-01-26 12:32:00');
L'output restituisce il risultato:
26
DAYNAME
Restituisce il nome del giorno della settimana da un'espressione data/ora specificata utilizzando il DAYNAME
funzione.
La sintassi di base:
DAYNAME(datetime);
Ad esempio, quando esegui il comando:
SELECT DAYNAME('2021-01-26 12:32:00');
MySQL risponde con il risultato:
Tuesday
GIORNO DEL MESE
Restituisce il giorno di un mese da un'espressione data/ora specificata con DAYOFMONTH
.
La sintassi di base:
DAYOFMONTH(datetime);
Ad esempio, quando esegui il comando:
SELECT DAYOFMONTH('2021-01-26 12:32:00');
MySQL risponde con il risultato:
26
GIORNO DELLA SETTIMANA
Restituisce il giorno della settimana in valore numerico dall'espressione data/ora specificata utilizzando DAYOFWEEK
.
La sintassi di base:
DAYOFWEEK(datetime);
Eseguendo il comando seguente:
SELECT DAYOFWEEK('2021-01-26 12:32:00');
Dà la risposta:
3
GIORNO DELL'ANNO
Restituisce il giorno in un anno dall'espressione data/ora specificata utilizzando la funzione DAYOFYEAR
.
La sintassi di base:
DAYOFYEAR(datetime);
Ad esempio, quando esegui il comando:
SELECT DAYOFYEAR('2021-02-26 12:32:00');
L'output dà il risultato:
57
DA_GIORNI
Restituisce un'espressione di data da una rappresentazione numerica di un giorno utilizzando la funzione FROM_DAYS
.
La sintassi di base:
FROM_DAYS(number);
Ad esempio, eseguendo:
SELECT FROM_DAYS(738181);
Il prompt di MySQL risponde con il risultato:
2021-01-26
ULTIMO GIORNO
Restituisci l'ultimo giorno del mese da una data/data/ora specificata con il LAST_DAY
funzione.
La sintassi di base:
LAST_DAY(date);
Ad esempio, se esegui il seguente comando:
SELECT LAST_DAY('2021-01-26');
L'output risponde con:
31
MESE
Restituisci il mese (in valore numerico) da una data/data/ora specificata utilizzando il MONTH
funzione.
La sintassi di base:
MONTH(date);
Ad esempio, quando esegui:
SELECT MONTH('2021-01-26');
MySQL risponde con:
1
NOME DEL MESE
Restituisci il nome del mese da una data/dataora specificata con il MONTHNAME
funzione.
La sintassi di base:
MONTHNAME(date);
Se esegui il comando:
SELECT MONTH('2021-01-26');
Ottieni la seguente risposta:
January
AGGIUNGI_PERIODO
Per aggiungere un numero specificato di mesi a un periodo, utilizza il PERIOD_ADD
funzione.
La sintassi di base:
PERIOD_ADD(period,number);
Il periodo è definito nel formato AAMM o AAAAMM, mentre il numero è il numero di mesi che vuoi aggiungere.
Ad esempio:
SELECT PERIOD_ADD(202101, 5);
Dà il risultato:
202106
PERIOD_DIFF
Restituisci il numero di mesi tra due periodi con PERIOD_DIFF
.
La sintassi di base:
PERIOD_DIFF(period1,period2);
Ogni periodo dovrebbe essere nel formato AAMM o AAAAMM.
Ad esempio:
SELECT PERIOD_DIFF(202101, 202003);
Produce il risultato:
10
TRIMESTRE
Per restituire un trimestre di un anno da una data/data/ora specificata, utilizzare la funzione QUARTER
.
La sintassi di base:
QUARTER(date);
Ad esempio, eseguendo il comando:
SELECT QUARTER('2021-01-26');
L'output risponde con:
1
TO_GIORNI
Converti un'espressione di data/ora in una rappresentazione numerica di un giorno con TO_DAYS
.
La sintassi di base:
TO_DAYS(datetime);
Ad esempio, per il comando:
SELECT TO_DAYS('2021-01-26');
Il risultato è:
738181
SETTIMANA
Per restituire il numero della settimana da una data specificata, utilizzare la funzione WEEK
.
La sintassi di base:
WEEK(date);
Puoi anche includere la modalità argomento, nel qual caso la sintassi è WEEK(date,mode);
.
L'argomento mode specifica da quale giorno inizia la settimana. Se non ci sono argomenti, usa 0
modalità predefinita.
La tabella seguente descrive ciascuna modalità:
Ad esempio, se esegui:
SELECT WEEK('2021-01-26');
L'output risponde con:
4
GIORNO DELLA SETTIMANA
Restituisci il giorno della settimana dalla data specificata in valore numerico con WEEKDAY
. Ogni numero rappresenta uno dei giorni della settimana:lunedì è 0
, martedì è 1
, e così via.
La sintassi di base:
WEEKDAY(date);
Ad esempio, eseguendo il comando seguente:
SELECT WEEKDAY('2021-01-26');
Dà la risposta:
1
ANNO SETTIMANALE
Per restituire il numero di una settimana in un anno, utilizza il WEEKDAY
funzione.
La sintassi di base:
WEEKOFYEAR(date);
Ad esempio, quando esegui il comando:
SELECT WEEKOFYEAR('2021-01-26');
L'output mostra il risultato:
3
ANNO
Restituisci l'anno dalla data specificata con il YEAR
funzione.
La sintassi di base:
YEAR(date);
Se esegui il seguente comando:
SELECT YEAR('2021-01-26');
Ottieni il risultato:
2021
SETTIMANA DELL'ANNO
Restituisci il numero dell'anno e della settimana dalla data specificata utilizzando il YEARWEEK
funzione.
La sintassi di base:
YEARWEEK(date);
Puoi aggiungere una mode
argomento alla sintassi di base per specificare il giorno da cui inizia la settimana. Per vedere un elenco di modalità e il loro significato, controlla la tabella nella WEEK
funzione.
Ad esempio, quando esegui il comando:
SELECT YEARWEEK('2021-01-26');
L'output visualizza:
202104