sql >> Base de Datos >  >> RDS >> Mysql

EXTRACT() Ejemplos – MySQL

En MySQL, puede usar EXTRACT() función para extraer partes de una fecha. Por ejemplo, puede extraer la parte del año, la parte del mes o la parte del día, etc. También puede extraer partes del componente de tiempo, como minutos, segundos, microsegundos, etc.

Este artículo contiene ejemplos para demostrar.

Sintaxis

La sintaxis es así:

EXTRACT(unit FROM date)

Donde unit es la parte de la fecha que desea extraer y date es el valor de fecha para extraer esa parte.

Consulte la tabla al final de este artículo para obtener una lista de especificadores de unidades válidos.

Ejemplo 1

Aquí hay un ejemplo para demostrar el uso básico de la función.

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

Resultado:

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

Ejemplo 2:más partes de fechas

Aquí extraigo las distintas partes de una fecha.

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:

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

Ejemplo 3:extracción de partes de tiempo

Aquí extraigo varias partes de tiempo de una fecha.

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';

Resultado:

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

Ejemplo 4:combinación de especificadores de unidades

También puede combinar especificadores de unidades, como este:

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

Resultado:

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

Este ejemplo devuelve todo, desde la parte de las horas hasta la parte de los microsegundos.

Un ejemplo de base de datos

Aquí hay un ejemplo de cómo extraer el año y el mes de una columna en una base de datos:

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

Resultado:

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

Fecha/hora actual

Aquí, extraigo la parte del mes de una fecha generada con CURDATE() función.

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

Resultado:

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

En este ejemplo, extraigo la parte de la hora de la fecha y hora actual (que se genera con NOW() función).

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

Resultado:

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

Valores esperados

La siguiente tabla muestra los valores unitarios válidos y su formato esperado.

unit Valor Esperado expr Formato
MICROSEGUNDO MICROSEGUNDOS
SEGUNDO SEGUNDOS
MINUTO MINUTOS
HORA HORAS
DÍA DÍAS
SEMANA SEMANAS
MES MESES
TRIMESTRE TRIMESTRE
AÑO AÑOS
SEGUNDO_MICROSEGUNDO ‘SEGUNDOS.MICROSEGUNDOS’
MINUTO_MICROSEGUNDO ‘MINUTOS:SEGUNDOS.MICROSEGUNDOS’
MINUTO_SEGUNDO 'MINUTOS:SEGUNDOS'
HORA_MICROSEGUNDO ‘HORAS:MINUTOS:SEGUNDOS.MICROSEGUNDOS’
HORA_SEGUNDO ‘HORAS:MINUTOS:SEGUNDOS’
HORA_MINUTO ‘HORAS:MINUTOS’
DÍA_MICROSEGUNDO ‘DÍAS HORAS:MINUTOS:SEGUNDOS.MICROSEGUNDOS’
DÍA_SEGUNDO ‘DÍAS HORAS:MINUTOS:SEGUNDOS’
DÍA_MINUTO ‘DÍAS HORAS:MINUTOS’
DÍA_HORA ‘DÍAS HORAS’
AÑO_MES 'AÑOS-MESES'