Aritmética de FECHA PostgreSQL (-)
Las funciones aritméticas DATE de PostgreSQL te permiten realizar cálculos con valores de fecha, como encontrar la diferencia entre dos fechas. Esta funcionalidad es esencial para analizar los intervalos de tiempo, la programación y los informes basados en el tiempo.
Utilización
La función aritmética FECHA se emplea cuando necesitas calcular la diferencia entre dos fechas o restar un intervalo de una fecha. Cuando se restan dos fechas, el resultado es un intervalo, concretamente en días. Esta operación se utiliza a menudo en situaciones como el cálculo de la edad, la duración o la programación de tareas.
SELECT date1 - date2 AS interval_result;
En esta sintaxis, date1
y date2
son valores de fecha, y la operación de resta -
calcula el intervalo entre ellos.
Ejemplos
1. Resta básica de fechas
SELECT '2023-10-10'::date - '2023-10-01'::date AS days_difference;
Este ejemplo calcula el número de días entre el 10 de octubre de 2023 y el 1 de octubre de 2023, dando como resultado una diferencia de 9 días.
2. Restar un intervalo
SELECT '2023-10-10'::date - INTERVAL '3 days' AS new_date;
Aquí, la operación resta 3 días al 10 de octubre de 2023, dando como resultado una nueva fecha del 7 de octubre de 2023.
3. Calcular la edad a partir de la fecha de nacimiento
SELECT CURRENT_DATE - birth_date AS age_in_days FROM users;
Este ejemplo calcula la edad en días de cada usuario de la tabla users
restando birth_date
de la fecha actual.
Consejos y buenas prácticas
- Asegúrate de que los tipos de datos son correctos. Convierte siempre las cadenas al tipo
date
explícitamente utilizando::date
para realizar cálculos precisos. - Comprende los intervalos. Un intervalo representa un lapso de tiempo y puede utilizarse para restar duraciones concretas, como días, meses o años, para garantizar la claridad y la mantenibilidad.
- Opta por FECHA_ACtual. Utiliza
CURRENT_DATE
para cálculos que incluyan la fecha actual, para garantizar que tus consultas sean dinámicas y estén actualizadas. - Conoce tus tipos de datos. Ten en cuenta las diferencias entre
date
,timestamp
, ytimestamp with time zone
para evitar confusiones, ya que sólotimestamp with time zone
tiene en cuenta las zonas horarias.