Ir al contenido principal
Documentos
Funciones de cadenaDesencadenaBases de datosFunciones JSONFunciones matemáticasFunciones de fechaÍndicesSintaxis básicaGestión de Tablas y Esquemas

EXTRACTO PostgreSQL

La función EXTRACT de PostgreSQL se utiliza para recuperar subcampos específicos, como año, mes, día, hora, etc., de valores de fecha/hora. Es esencial para la manipulación y el análisis de la fecha-hora en las consultas SQL.

Utilización

La función EXTRACTAR es especialmente útil cuando necesitas aislar una parte concreta de un valor de fecha/hora con fines de filtrado, agrupación o visualización. Su sintaxis es sencilla:

EXTRACT(field FROM source)

En esta sintaxis, field representa la parte de la fecha/hora que quieres extraer (por ejemplo, YEAR, MONTH, DOW, DOY, EPOCH), y source es cualquier expresión que devuelva un valor timestamp, date, interval, o time, no sólo literales.

Ejemplos

1. Año de extracción

SELECT EXTRACT(YEAR FROM '2023-10-14'::date) AS year;

Este ejemplo extrae el año 2023 de la fecha especificada.

2. Extraer el mes de la fecha actual

SELECT EXTRACT(MONTH FROM CURRENT_DATE) AS month;

Aquí, la función EXTRACT recupera el mes actual a partir de la fecha del sistema.

3. Extraer la hora de la marca de tiempo

SELECT EXTRACT(HOUR FROM TIMESTAMP '2023-10-14 15:23:45') AS hour;

Este ejemplo extrae la hora 15 de la marca de tiempo dada.

4. Extraer el día de la semana

SELECT EXTRACT(DOW FROM CURRENT_DATE) AS day_of_week;

Este ejemplo recupera el día de la semana, donde el domingo es 0 y el sábado es 6.

5. Utilizar EXTRACT con GROUP BY

SELECT EXTRACT(YEAR FROM order_date) AS order_year, COUNT(*)
FROM orders
GROUP BY order_year;

Este ejemplo agrupa los pedidos por año, demostrando el uso de EXTRACT con GROUP BY.

Consejos y buenas prácticas

  • La precisión importa. Asegúrate de que source está en el formato correcto de fecha/hora para evitar errores o resultados inesperados.
  • Combínalo con otras funciones. Utiliza EXTRACT con GROUP BY o ORDER BY para organizar los resultados por intervalos de tiempo.
  • Ten en cuenta las zonas horarias. Ten en cuenta el contexto de zona horaria de tus datos para garantizar una extracción precisa.
  • Comprueba si hay valores nulos. Maneja los posibles nulos en los campos fecha/hora utilizando COALESCE o funciones similares para evitar fallos en la consulta. Por ejemplo:
SELECT EXTRACT(YEAR FROM COALESCE(order_date, CURRENT_DATE)) AS year;
  • Tipos de devolución. EXTRACT devuelve un valor de doble precisión para todos los campos, excepto cuando la fuente es un intervalo, en cuyo caso devuelve un número entero para campos como YEAR, MONTH, etc.
  • EXTRACTO vs FECHA_PARTE. Ambas funciones sirven para fines similares, pero DATE_PART es una sintaxis de función más tradicional en PostgreSQL. Elige en función de la convención personal o del proyecto.