A função DATE_TRUNC trunca uma expressão de timestamp ou literal com base na parte da data especificada, tal como hora, dia ou mês.
Sintaxe
DATE_TRUNC('datepart', timestamp)
Argumentos
- datepart
-
A parte da data para qual truncar o valor de timestamp. A entrada timestamp é truncada para que a entrada datepart seja precisa. Por exemplo,
month
trunca para o primeiro dia do mês. Os formatos válidos são:microssegundo, microssegundos
milissegundo, milissegundos
segundo, segundos
minuto, minutos
hora, horas
dia, dias
semana, semanas
mês, meses
trimestre, trimestres
ano, anos
década, décadas
século, séculos
milênio, milênios
Para obter mais informações sobre a abreviação de alguns formatos, consulte Partes da data para funções de data ou de timestamp
- timestamp
-
Uma coluna de timestamp ou uma expressão que converta implicitamente para um timestamp.
Tipo de retorno
TIMESTAMP
Exemplos
Truncar o carimbo de data/hora de entrada para o segundo.
SELECT DATE_TRUNC('second', TIMESTAMP '20200430 04:05:06.789');
date_trunc
2020-04-30 04:05:06
Truncar timestamp para minuto.
SELECT DATE_TRUNC('minute', TIMESTAMP '20200430 04:05:06.789');
date_trunc
2020-04-30 04:05:00
Truncar timestamp para hora.
SELECT DATE_TRUNC('hour', TIMESTAMP '20200430 04:05:06.789');
date_trunc
2020-04-30 04:00:00
Truncar timestamp para dia.
SELECT DATE_TRUNC('day', TIMESTAMP '20200430 04:05:06.789');
date_trunc
2020-04-30 00:00:00
Truncar timestamp para o primeiro dia de um mês.
SELECT DATE_TRUNC('month', TIMESTAMP '20200430 04:05:06.789');
date_trunc
2020-04-01 00:00:00
Truncar timestamp para o primeiro dia de um trimestre.
SELECT DATE_TRUNC('quarter', TIMESTAMP '20200430 04:05:06.789');
date_trunc
2020-04-01 00:00:00
Truncar timestamp para o primeiro dia de um ano.
SELECT DATE_TRUNC('year', TIMESTAMP '20200430 04:05:06.789');
date_trunc
2020-01-01 00:00:00
Truncar timestamp para o primeiro dia de um século.
SELECT DATE_TRUNC('millennium', TIMESTAMP '20200430 04:05:06.789');
date_trunc
2001-01-01 00:00:00
Trunque o carimbo de data/hora de entrada para o a segunda-feira de uma semana.
select date_trunc('week', TIMESTAMP '20220430 04:05:06.789');
date_trunc
2022-04-25 00:00:00
No exemplo a seguir, a função DATE_TRUNC usa a parte da data “week” para retornar a data para a segunda-feira 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