Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Exemplos de EXTRACT() – MySQL


No MySQL, você pode usar o EXTRACT() função para extrair partes de uma data. Por exemplo, você pode extrair a parte do ano, a parte do mês ou a parte do dia etc. Você também pode extrair partes do componente de hora, como minutos, segundos, microssegundos etc.

Este artigo contém exemplos para demonstrar.


Sintaxe


A sintaxe fica assim:
EXTRATO(unidade FROM data)

Onde unit é a parte da data que você deseja extrair e date é o valor de data do qual extrair essa parte.

Consulte a tabela na parte inferior deste artigo para obter uma lista de especificadores de unidade válidos.

Exemplo 1


Aqui está um exemplo para demonstrar o uso básico da função.
SELECT EXTRACT(YEAR FROM '2019-01-01') AS 'Result';

Resultado:
+--------+| Resultado |+--------+| 2019 |+--------+

Exemplo 2 – Mais partes de data


Aqui eu extraio as várias partes de uma 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 ';

Resultado:
+------+-------+------+| Dia | Mês | Ano |+------+-------+------+| 3 | 10 | 2019 |+------+-------+------+

Exemplo 3 – Extraindo Partes do Tempo


Aqui eu extraio várias partes de tempo de uma data.
SET @date ='2019-10-03 12:35:05.123456';SELECT EXTRACT(HOUR FROM @date) AS 'Horas', EXTRACT(MINUTE FROM @date) AS 'Minutes', EXTRACT(SECOND FROM @ date) AS 'Seconds', EXTRACT(MICROSECOND FROM @date) AS 'Microseconds';

Resultado:
+-------+---------+---------+--------------+| Horas | Minutos | Segundos | Microssegundos |+-------+---------+---------+--------------+| 12 | 35 | 5 | 123456 |+-------+---------+---------+--------------+

Exemplo 4 – Combinando especificadores de unidade


Você também pode combinar especificadores de unidade, assim:
SET @date ='2019-10-03 12:35:05.123456';SELECT EXTRACT(HOUR_MICROSECOND FROM @date) AS 'Result';

Resultado:
+--------------+| Resultado |+----------+| 123505123456 |+------------------+

Este exemplo retorna tudo, desde a parte das horas até a parte dos microssegundos.

Um exemplo de banco de dados


Aqui está um exemplo de extração do ano e mês de uma coluna em um banco de dados:
USE sakila;SELECT payment_date AS 'Data/Hora', EXTRACT(YEAR_MONTH FROM payment_date) AS 'Year/Month'FROM paymentWHERE payment_id =1;

Resultado:
+----------+------------+| Data/Hora | Ano/Mês |+----------+------------+| 25-05-2005 11:30:37 | 200505 |+---------------------+----------------+

Data/hora atual


Aqui, extraio a parte do mês de uma data gerada com o CURDATE() função.
SELECT CURDATE(), EXTRACT(MONTH FROM CURDATE());

Resultado:
+------------+------------------------------------------+| CURDADO() | EXTRACT(MÊS DE CURDATE()) |+------------+--------------------------- ----+| 26-06-2018 | 6 |+------------+-------------------------------+ 
Neste exemplo eu extraio a parte da hora da data e hora atuais (que é gerada com o NOW() função).
SELECT NOW(), EXTRACT(HOUR FROM NOW());

Resultado:
+---------------------+------------------------ --+| AGORA() | EXTRACT(HORA DE AGORA()) |+--------------------------------+------------------ --------+| 2018-06-26 09:01:46 | 9 |+---------------------+------------------------- -+

Valores esperados


A tabela a seguir mostra os valores de unidade válidos e seu formato esperado.
unit Valor Esperado expr Formato
MICROSSEGUNDO MICROSSEGUNDOS
SEGUNDA SEGUNDOS
MINUTO MINUTOS
HORA HORÁRIOS
DIA DIAS
SEMANA SEMANAS
MÊS MESES
QUARTO QUARTOS
ANO ANOS
SECOND_MICROSECOND 'SEGUNDOS.MICROSSEGUNDOS'
MINUTE_MICROSECOND 'MINUTOS:SEGUNDOS.MICROSSEGUNDOS'
MINUTE_SECOND 'MINUTOS:SEGUNDOS'
HOUR_MICROSECOND 'HORAS:MINUTOS:SEGUNDOS.MICROSSEGUNDOS'
HOUR_SECOND 'HORAS:MINUTOS:SEGUNDOS'
HOUR_MINUTE 'HORAS:MINUTOS'
DAY_MICROSECOND 'DIAS HORAS:MINUTOS:SEGUNDOS.MICROSSEGUNDOS'
DAY_SECOND 'DIAS HORAS:MINUTOS:SEGUNDOS'
DAY_MINUTE 'DIAS HORAS:MINUTOS'
DAY_HOUR 'DIAS HORAS'
YEAR_MONTH 'ANOS-MESES'