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
sourceestá en el formato correcto de fecha/hora para evitar errores o resultados inesperados. - Combínalo con otras funciones. Utiliza EXTRACT con
GROUP BYoORDER BYpara 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
COALESCEo 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_PARTes una sintaxis de función más tradicional en PostgreSQL. Elige en función de la convención personal o del proyecto.