Función DATE_TRUNC
La función DATE_TRUNC trunca todo literal o expresión de marca temporal basado en la parte de fecha especificada, como la hora, la semana o el mes.
Sintaxis
DATE_TRUNC('datepart', timestamp)
Argumentos
- datepart
-
La parte de fecha que trunca el valor de una marca temporal. La timestamp de entrada se trunca en la precisión de la entrada datepart. Por ejemplo,
month
se trunca en el primer día del mes. Los formatos válidos son los siguientes:microsegundo, microsegundos
milisegundo, milisegundos
segundo, segundos
minuto, minutos
hora, horas
día, días
semana, semanas
mes, meses
trimestre, trimestres
año, años
década, décadas
siglo, siglos
milenio, milenios
Para obtener más información sobre las abreviaturas de algunos formatos, consulte Partes de fecha para funciones de fecha o marca temporal.
- timestamp
-
Una columna de marca temporal o una expresión que, implícitamente, se convierte en una marca temporal.
Tipo de retorno
TIMESTAMP
Ejemplos
Trunque la marca temporal de entrada en el segundo.
SELECT DATE_TRUNC('second', TIMESTAMP '20200430 04:05:06.789');
date_trunc 2020-04-30 04:05:06
Trunque la marca temporal de entrada al minuto.
SELECT DATE_TRUNC('minute', TIMESTAMP '20200430 04:05:06.789');
date_trunc 2020-04-30 04:05:00
Trunque la marca temporal de entrada a la hora.
SELECT DATE_TRUNC('hour', TIMESTAMP '20200430 04:05:06.789');
date_trunc 2020-04-30 04:00:00
Trunque la marca temporal de entrada al día.
SELECT DATE_TRUNC('day', TIMESTAMP '20200430 04:05:06.789');
date_trunc 2020-04-30 00:00:00
Trunque la marca temporal de entrada al primer día de un mes.
SELECT DATE_TRUNC('month', TIMESTAMP '20200430 04:05:06.789');
date_trunc 2020-04-01 00:00:00
Trunque la marca temporal de entrada al primer día de un trimestre.
SELECT DATE_TRUNC('quarter', TIMESTAMP '20200430 04:05:06.789');
date_trunc 2020-04-01 00:00:00
Trunque la marca temporal de entrada al primer día de un año.
SELECT DATE_TRUNC('year', TIMESTAMP '20200430 04:05:06.789');
date_trunc 2020-01-01 00:00:00
Trunque la marca temporal de entrada al primer día de un siglo.
SELECT DATE_TRUNC('millennium', TIMESTAMP '20200430 04:05:06.789');
date_trunc 2001-01-01 00:00:00
Trunque la marca temporal de entrada al lunes de un mes.
select date_trunc('week', TIMESTAMP '20220430 04:05:06.789');
date_trunc 2022-04-25 00:00:00
En el siguiente ejemplo, la función DATE_TRUNC usa la parte de fecha “week” (semana) para devolver la fecha del lunes de cada semana.
select date_trunc('week', saletime), sum(pricepaid) from sales where saletime like '2008-09%' group by date_trunc('week', saletime) order by 1;
date_trunc | sum ------------+------------- 2008-09-01 | 2474899 2008-09-08 | 2412354 2008-09-15 | 2364707 2008-09-22 | 2359351 2008-09-29 | 705249