Mysql
 sql >> Database >  >> RDS >> Mysql

EXTRACT() Esempi – MySQL

In MySQL, puoi usare EXTRACT() funzione per estrarre parti da una data. Ad esempio, puoi estrarre la parte dell'anno, la parte del mese o la parte del giorno, ecc. Puoi anche estrarre parti dalla componente del tempo, come minuti, secondi, microsecondi, ecc.

Questo articolo contiene esempi da dimostrare.

Sintassi

La sintassi è questa:

EXTRACT(unit FROM date)

Dove unit è la parte della data che vuoi estrarre e date è il valore della data da cui estrarre quella parte.

Consulta la tabella in fondo a questo articolo per un elenco di identificatori di unità validi.

Esempio 1

Ecco un esempio per dimostrare l'utilizzo di base della funzione.

SELECT EXTRACT(YEAR FROM '2019-01-01') AS 'Result';

Risultato:

+--------+
| Result |
+--------+
|   2019 |
+--------+

Esempio 2:più parti della data

Qui estraggo le varie parti di data da una data.

SET @date = '2019-10-03';
SELECT 
    EXTRACT(DAY FROM @date) AS 'Day',
    EXTRACT(MONTH FROM @date) AS 'Month',
    EXTRACT(YEAR FROM @date) AS 'Year';

Risultato:

+------+-------+------+
| Day  | Month | Year |
+------+-------+------+
|    3 |    10 | 2019 |
+------+-------+------+

Esempio 3:estrazione di parti temporali

Qui estraggo varie parti di tempo da una data.

SET @date = '2019-10-03 12:35:05.123456';
SELECT 
    EXTRACT(HOUR FROM @date) AS 'Hours',
    EXTRACT(MINUTE FROM @date) AS 'Minutes',
    EXTRACT(SECOND FROM @date) AS 'Seconds',
    EXTRACT(MICROSECOND FROM @date) AS 'Microseconds';

Risultato:

+-------+---------+---------+--------------+
| Hours | Minutes | Seconds | Microseconds |
+-------+---------+---------+--------------+
|    12 |      35 |       5 |       123456 |
+-------+---------+---------+--------------+

Esempio 4 – Combinazione di specificatori di unità

Puoi anche combinare gli identificatori di unità, in questo modo:

SET @date = '2019-10-03 12:35:05.123456';
SELECT 
    EXTRACT(HOUR_MICROSECOND FROM @date) AS 'Result';

Risultato:

+--------------+
| Result       |
+--------------+
| 123505123456 |
+--------------+

Questo esempio restituisce tutto, dalla parte delle ore alla parte dei microsecondi.

Un esempio di database

Ecco un esempio di estrazione dell'anno e del mese da una colonna in un database:

USE sakila;
SELECT
  payment_date AS 'Date/Time',
  EXTRACT(YEAR_MONTH FROM payment_date) AS 'Year/Month'
FROM payment
WHERE payment_id = 1;

Risultato:

+---------------------+------------+
| Date/Time           | Year/Month |
+---------------------+------------+
| 2005-05-25 11:30:37 |     200505 |
+---------------------+------------+

Data/ora corrente

Qui, estraggo la parte del mese da una data generata con CURDATE() funzione.

SELECT 
    CURDATE(),
    EXTRACT(MONTH FROM CURDATE());

Risultato:

+------------+-------------------------------+
| CURDATE()  | EXTRACT(MONTH FROM CURDATE()) |
+------------+-------------------------------+
| 2018-06-26 |                             6 |
+------------+-------------------------------+

In questo esempio estraggo la parte dell'ora dalla data e ora correnti (che viene generata con NOW() funzione).

SELECT 
    NOW(),
    EXTRACT(HOUR FROM NOW());

Risultato:

+---------------------+--------------------------+
| NOW()               | EXTRACT(HOUR FROM NOW()) |
+---------------------+--------------------------+
| 2018-06-26 09:01:46 |                        9 |
+---------------------+--------------------------+

Valori previsti

La tabella seguente mostra i valori unitari validi e il loro formato previsto.

unit Valore Previsto expr Formato
MICROSECONDO MICROSECONDI
SECONDA SECONDI
MINUTO MINUTI
ORA ORE
GIORNO GIORNI
SETTIMANA SETTIMANE
MESE MESI
TRIMESTRE TRIMESTRE
ANNO ANNI
SECOND_MICROSECONDO 'SECONDI.MICROSECONDI'
MINUTE_MICROSECOND 'MINUTI:SECONDI.MICROSECONDI'
MINUTE_SECOND 'MINUTI:SECONDI'
ORA_MICROSECOND 'ORE:MINUTI:SECONDI.MICROSECONDI'
ORA_SECONDA 'ORE:MINUTI:SECONDI'
ORA_MINUTO 'ORE:MINUTI'
DAY_MICROSECONDO 'GIORNI ORE:MINUTI:SECONDI.MICROSECONDI'
DAY_SECOND 'GIORNI ORE:MINUTI:SECONDI'
DAY_MINUTE 'GIORNI ORE:MINUTI'
DAY_HOUR 'ORE DEI GIORNI'
ANNO_MESE 'ANNI-MESI'