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