La función DATE_TRUNC en PostgreSQL es una herramienta poderosa para trabajar con datos temporales, ya que permite truncar un valor de tipo TIMESTAMP
o INTERVAL
a la precisión especificada. Esta función es especialmente útil para realizar análisis temporales, como agrupar datos por días, meses, trimestres u otras unidades de tiempo, al eliminar la granularidad innecesaria.
Con DATE_TRUNC, puedes definir la parte del valor temporal que deseas conservar, como el año, mes, día, hora, minuto o segundo. Esto simplifica la manipulación y comparación de datos cronológicos, haciéndola ideal para reportes o consultas donde necesitas agrupar o filtrar información basada en unidades específicas de tiempo.
En este artículo, primero exploraremos la sintaxis básica de DATE_TRUNC, y después veremos ejemplos prácticos para que comprendas cómo aprovechar al máximo esta función en diferentes escenarios de uso.
Podemos indicar las siguientes opciones para truncar los valores: año, mes, semana, día, hora, minuto, segundo, entre otras. A continuación, veremos cómo implementarla.
Para más información, puedes consultar la documentación oficial de la función DATE_TRUNC en PostgreSQL.
Campo | Descripción |
---|---|
century | siglo |
decade | decada |
year | año |
quarter | trimestre del año |
month | mes |
week | semana |
day | día |
hour | hora |
minute | minuto |
second | segundo |
microseconds | microsegundo |
milliseconds | milisegundos |
dow | día de la semana (0-6) |
doy | día del año |
epoch | numero de segundos |
isodow | día de la semana (ISO) |
isoyear | año (ISO) |
Sintaxis
La sintaxis para utilizar la función DATE_TRUNC en PostgreSQL es la siguiente:
DATE_TRUNC(campo, origen)
Esta función consta de dos argumentos obligatorios:
- campo: parte que se quiere extraer como por ejemplo year, day, etc.
- origen: fecha de la que se va a truncar el primer argumento. Tiene que ser de tipo TIMESTAMP o INTERVAL. Si se le especifica un valor de tipo DATE, automáticamente se convertirá en TIMESTAMP.
Ejemplo
SELECT DATE_TRUNC('hour', TIMESTAMP '2017-03-17 02:09:30');
