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.