Ir al contenido principal
Documentos
Funciones de cadenaDesencadenaBases de datosFunciones JSONFunciones matemáticasFunciones de fechaÍndicesSintaxis básicaGestión de Tablas y Esquemas

PostgreSQL DATE_TRUNC

La función `DATE_TRUNC` de PostgreSQL se utiliza para truncar una fecha o marca de tiempo a una precisión especificada, como la hora, el día o el mes. Es útil en situaciones en las que necesitas agregar datos en intervalos de tiempo específicos.

Utilización

La función `DATE_TRUNC` se emplea cuando necesitas alinear fechas y marcas de tiempo con un determinado nivel de precisión para realizar análisis o informes. Suele utilizarse junto con funciones de agregación para resumir datos en periodos de tiempo determinados.

sql
DATE_TRUNC('precision', source_date)

En esta sintaxis, `'precisión` especifica el nivel al que se truncará la fecha (por ejemplo, `hora`, `día`), y `fecha_de_origen` es la fecha o marca de tiempo que se va a truncar. La `fecha_fuente` puede ser una columna de una tabla o cualquier expresión que dé como resultado una fecha o una marca de tiempo.

Opciones de precisión

PostgreSQL admite varios niveles de precisión para el truncamiento, incluidos:

  • `second`
  • `minuto
  • "hora
  • `día
  • `week`
  • `mes`
  • `quarter`
  • "año
  • `decade`
  • `century`
  • `millennium`

Ejemplos

1. Truncar al día

sql
SELECT DATE_TRUNC('day', TIMESTAMP '2023-10-04 15:23:45');

Este ejemplo trunca la marca de tiempo al principio del día, dando como resultado `2023-10-04 00:00:00`. Si la fecha de origen ya está en la precisión especificada, como `2023-10-04 00:00:00`, el resultado no cambia.

2. Truncar a Mes

sql
SELECT DATE_TRUNC('month', TIMESTAMP '2023-10-04 15:23:45');

Aquí, la marca de tiempo se trunca hasta el principio del mes, devolviendo `2023-10-01 00:00:00`.

3. Truncar para agregar

sql
SELECT DATE_TRUNC('week', order_date) AS week_start, COUNT(*)
FROM orders
GROUP BY week_start;

Este ejemplo trunca `fecha_pedido` al inicio de cada semana para agrupar los pedidos por intervalos semanales, proporcionando un recuento de pedidos por semana.

Consejos y buenas prácticas

  • Elige la precisión adecuada. Selecciona el nivel de precisión que se ajuste a tus necesidades de análisis de datos, como "día" para resúmenes diarios o "mes" para tendencias mensuales.
  • Combínalo con áridos. Utiliza `DATE_TRUNC` con funciones de agregación como `COUNT`, `SUM` o `AVG` para realizar análisis de datos basados en el tiempo.
  • Ten en cuenta las zonas horarias. Asegúrate de que tus marcas de tiempo están en la zona horaria correcta para evitar imprecisiones al truncar. Utiliza `AT TIME ZONE` para manejar explícitamente la zona horaria, por ejemplo, `DATE_TRUNC('day', timestamp_column AT TIME ZONE 'UTC')`.
  • Optimiza el rendimiento. Truncar grandes conjuntos de datos puede consumir muchos recursos; considera la posibilidad de indexar tus columnas de fecha con un índice de árbol B para mejorar el rendimiento de la consulta.