SQL - Funzioni di data
La tabella seguente contiene un elenco di tutte le funzioni importanti relative a data e ora disponibili tramite SQL. Ci sono varie altre funzioni supportate dal tuo RDBMS. L'elenco fornito è basato su MySQL RDBMS.
Sr.No. | Descrizione della funzione |
---|---|
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 la data o l'espressione 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 tratta 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, mentre 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. Sia expr1 che 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. Ildateè un valore DATETIME o DATE che specifica la data di inizio. Ilexprè un'espressione che specifica il valore dell'intervallo da aggiungere o sottrarre dalla data di inizio. L'espr è una stringa; può iniziare con un "-" per gli intervalli negativi.
UN unit è una parola chiave che indica le unità in cui l'espressione deve essere interpretata.
Il INTERVAL la parola chiave 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.
valore unitario | Previsto exprFormat |
---|---|
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 WEEKsono disponibili da MySQL 5.0.0. versione.
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)
Questo comando formatta il valore della data secondo la stringa di formato.
I seguenti specificatori possono essere utilizzati nella stringa di formato. Il carattere "%" è obbligatorio prima dei caratteri dell'identificatore di formato.
Sr.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 della funzione 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)
Note- 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 di unix_timestampargomento 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. L'argomento unix_timestamp è un valore di timestamp interno, prodotto daUNIX_TIMESTAMP() funzione.
Se viene fornito il formato, il risultato viene formattato in base alla stringa di formato, che viene utilizzata nello stesso modo in cui è elencato nella voce per il DATE_FORMAT() funzione.
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 è effettivamente 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)
Prende 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. Il valore dayofyear deve essere maggiore di 0 o il risultato sarà 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 numero nell'intervallo da 0 a 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 una 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. Questo 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 a un 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. Questi periodi 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 nel 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 (). Accetta una stringa str e un formato stringa di formato. La funzione STR_TO_DATE () restituisce un valore DATETIME se la stringa di formato contiene parti di data e ora. Altrimenti, restituisce un valore DATA o ORA 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)
La funzione SUBTIME () restituisce expr1. expr2 espresso come valore nello stesso formato di expr1. Il valore expr1 è un'espressione time o datetime, mentre il valore expr2 è un'espressione time.
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 lo restituisce come una 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)
La funzione TIMEDIFF () restituisce expr1. expr2 espresso come valore temporale. Questi valori expr1 ed expr2 sono espressioni di ora o data e ora, ma devono essere entrambi 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 datetimeexpr1 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)
Questa funzione aggiunge l'intervallo dell'espressione intera all'espressione date o datetime datetime_expr. L'unità per intervallo è data dall'argomento unit, che dovrebbe essere uno dei seguenti valori:
- FRAC_SECOND
- SECONDO, MINUTO
- ORA, GIORNO
- 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 l'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)
Questa funzione è 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, la percentualeH e %k Gli identificatori di formato dell'ora producono un valore maggiore del normale intervallo compreso tra 0 e 23. Gli altri identificatori 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 chiamata senza argomenti, questa funzione 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 in "AAAA-MM-GG HH: MM: SS" o in formato 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 di lunedì e se il valore restituito deve essere compreso nell'intervallo da 0 a 53 o da 1 a 53. Se l'argomento mode viene omesso, viene utilizzato il valore della variabile di sistema default_week_format
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 l'anno e la settimana per una data. L'argomento mode funziona esattamente come l'argomento mode della funzione 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)
Note - 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.