PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

postgresql date_trunc à une précision arbitraire ?

Il n'y a pas de fonction que vous voulez, mais comme indiqué dans le wiki postgresql, vous pouvez définir la fonction pour vous-même :

CREATE OR REPLACE FUNCTION round_time_10m(TIMESTAMP WITH TIME ZONE) 
RETURNS TIMESTAMP WITH TIME ZONE AS $$ 
  SELECT date_trunc('hour', $1) + INTERVAL '10 min' * ROUND(date_part('minute', $1) / 10.0) 
$$ LANGUAGE SQL;

Généralement arrondi à 2 $ par minute :

CREATE OR REPLACE FUNCTION round_time_nm(TIMESTAMP WITH TIME ZONE, INTEGER) 
RETURNS TIMESTAMP WITH TIME ZONE AS $$ 
  SELECT date_trunc('hour', $1) + ($2 || ' min')::INTERVAL * ROUND(date_part('minute', $1) / $2) 
$$ LANGUAGE SQL;