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
