Introducción
Cuando trabajas con bases de datos SQL, incluida PostgreSQL, manipular y consultar datos de fecha y hora es una habilidad fundamental. Muchas veces, las aplicaciones requieren análisis o reportes enfocados en los días hábiles, excluyendo los fines de semana. En este tutorial verás cómo seleccionar registros solo de días hábiles usando las funciones de fecha y hora de PostgreSQL.
Cómo funcionan la fecha y la hora en PostgreSQL
PostgreSQL ofrece un conjunto completo de funciones y operadores para trabajar con fechas y horas, lo que facilita hacer consultas complejas, como seleccionar filas según el día de la semana.
Tipos de datos de fecha/hora
Antes de consultar días hábiles, conviene conocer los principales tipos de datos de fecha/hora en PostgreSQL:
-
DATE: para fechas (año, mes, día). -
TIMESTAMP: para fecha y hora, sin zona horaria. -
TIMESTAMPTZ: para fecha y hora, con zona horaria. -
TIME: solo para la hora, sin zona horaria. -
TIMETZ: solo para la hora, con zona horaria.
La función EXTRACT
Una función clave para trabajar con días de la semana es EXTRACT. Te permite extraer partes de un valor de fecha/hora, como el día de la semana.
Consultar solo días hábiles
Para seleccionar registros que caen en días hábiles (de lunes a viernes), puedes usar la función EXTRACT para obtener el día de la semana de una fecha, donde el domingo es 0 y el sábado es 6.
Selección básica de días hábiles
Así puedes filtrar las filas para incluir solo días hábiles:
-- Assuming a table 'events' with a 'date' column
SELECT *
FROM events
WHERE EXTRACT(DOW FROM date) BETWEEN 1 AND 5;
Esta consulta selecciona las filas de la tabla events donde el día de la semana de la columna date está entre 1 (lunes) y 5 (viernes), inclusive.
Resultado:
| id | date | event_name |
|---|---|---|
| 1 | 2024-03-04 | Lanzamiento del proyecto |
| 2 | 2024-03-05 | Junta de equipo |
Escenarios complejos: unir tablas y filtrar por días hábiles
Veamos un ejemplo más complejo en el que necesitas unir tablas y aun así filtrar por días hábiles.
-- Assuming another table 'event_details' that references 'events'
SELECT e.*, ed.detail
FROM events e
JOIN event_details ed ON e.id = ed.event_id
WHERE EXTRACT(DOW FROM e.date) BETWEEN 1 AND 5;
Esta consulta no solo filtra los eventos por días hábiles, sino que también hace un join con la tabla event_details para obtener datos relacionados.
Resultado:
| id | date | event_name | detail |
|---|---|---|---|
| 1 | 2024-03-04 | Lanzamiento del proyecto | Junta de arranque |
| 2 | 2024-03-05 | Junta de equipo | Revisión mensual |
Casos de uso
Análisis de horas trabajadas
Para las empresas que registran horas de trabajo, excluir los fines de semana puede dar información valiosa sobre productividad y costos laborales.
-- Assuming a table 'work_hours' with 'employee_id', 'date', and 'hours_worked'
SELECT employee_id, SUM(hours_worked) AS total_hours
FROM work_hours
WHERE EXTRACT(DOW FROM date) BETWEEN 1 AND 5
GROUP BY employee_id;
Esta consulta calcula el total de horas trabajadas por cada empleado en días hábiles.
Resultado:
| employee_id | total_hours |
|---|---|
| 101 | 40 |
| 102 | 38 |
Planeación de eventos
Para quienes organizan eventos, enfocarse en días hábiles ayuda a organizar y agendar eventos de forma más eficiente.
-- Finding available event dates during weekdays
SELECT date
FROM events
WHERE EXTRACT(DOW FROM date) BETWEEN 1 AND 5
AND date > CURRENT_DATE
ORDER BY date;
Esto ayuda a identificar las próximas fechas hábiles para planear eventos futuros.
Resultado:
| date |
|---|
| 2024-03-06 |
| 2024-03-07 |
Conclusión
Seleccionar registros según los días hábiles en PostgreSQL es una técnica útil para el análisis de datos y la lógica de aplicaciones. Aprovechando las funciones de fecha y hora de PostgreSQL, sobre todo EXTRACT, puedes filtrar datos fácilmente según tus necesidades. Ya sea que analices operaciones de negocio, planees eventos o simplemente administres horarios, saber consultar días hábiles mejorará tus habilidades con bases de datos.
Practica con estos ejemplos, explora la documentación de PostgreSQL para conocer más funciones de fecha/hora y saca más provecho de tus datos.
¡Felices consultas!
Beekeeper Studio es un cliente de bases de datos gratuito y de código abierto
La mejor herramienta de consultas y edición de SQL que he usado. Tiene todo lo que necesito para administrar mi base de datos. - ⭐⭐⭐⭐⭐ Mit
Beekeeper Studio es rápido, intuitivo y fácil de usar. Es compatible con muchísimas bases de datos y funciona de maravilla en Windows, Mac y Linux.
Lo que dicen los usuarios de Beekeeper Studio
"Beekeeper Studio reemplazó por completo mi antiguo flujo de trabajo con SQL. Es rápido, intuitivo y hace que trabajar con bases de datos vuelva a ser agradable."
"He probado muchas GUI de bases de datos, pero Beekeeper logra el equilibrio perfecto entre funciones y sencillez. Simplemente funciona."