Operaciones aritméticas en consultas SQL con fechas
Clase 19 de 29 • Curso de PostgreSQL
Resumen
Aprender a realizar operaciones aritméticas directamente en consultas SQL es increíblemente útil para optimizar procesos. Una tarea común es determinar el tiempo transcurrido entre dos fechas, algo que recuerda a fórmulas que vemos en Excel pero aplicadas a SQL. Vamos a explorar cómo hacerlo paso a paso usando funciones clave como ROUND
, EXTRACT
, epoch
y operadores matemáticos sencillos.
¿Qué ventaja tiene usar comentarios en sentencias SQL?
Antes de mostrar cómo calcular días, es importante resaltar una buena práctica muy útil: agregar comentarios en las consultas. Incorporar comentarios ayuda enormemente a reutilizar sentencias SQL ya creadas y facilita el entendimiento y organización. Aunque en otras áreas del código puede ser negligente, en SQL esto es particularmente valioso y bien recomendado.
¿Cómo calcular días entre dos fechas usando SQL?
La necesidad aquí es simple pero en extremo práctica: determinar cuántos días ha durado una renta. Para lograrlo, la consulta utiliza:
- El operador
SELECT
para escoger campos específicos. - La función
ROUND
para redondear la cantidad de días a enteros o decimales según se necesite. - El operador
EXTRACT
conepoch
, que convierte tiempos a segundos desde un punto específico.
La consulta SQL escrita pasaría a verse así:
SELECT rental_id,
ROUND(
EXTRACT(epoch FROM AGE(return_date, rental_date)) / 86400, 2
) AS "días rentados"
FROM rental;
Aquí explicamos brevemente cada elemento clave:
- EXTRACT(epoch): convierte la diferencia temporal en segundos, facilitando la comparación.
- AGE(return_date, rental_date): calcula la diferencia entre dos fechas.
- 86400: representa la cantidad total de segundos en un día (24 horas).
- ROUND(valor, decimales): redondea el resultado, adaptándose según la precisión deseada.
¿Cómo ajustar la precisión del resultado?
Dependiendo del detalle que necesites, cambiar la precisión es sencillo:
- Un valor de precisión de
2
muestra decimales: útil para resultados como "2.5 días". - Un valor de
0
ofrece resultados enteros: ideal cuando solo cuenta el día completo.
Ajustas simplemente el segundo parámetro de ROUND
según requieras:
ROUND(
EXTRACT(epoch FROM AGE(return_date, rental_date)) / 86400, 0
)
Esto asegura que tus resultados se ajusten exactamente al nivel de detalle que buscas.
¿Cuándo es ideal usar operaciones aritméticas en SQL?
Aunque quizá no se utilicen constantemente, conocer operaciones aritméticas en SQL es esencial. Estas prácticas eliminan la necesidad de realizar cálculos externos en APIs o aplicaciones. Esto significa menos transferencia de datos, menos procesamiento innecesario y resultados rápidos y eficientes directamente desde tu base de datos.
¿Qué otros usos conoces para operaciones aritméticas en SQL? ¡Comparte tus experiencias en los comentarios!