sql >> Databasteknik >  >> RDS >> PostgreSQL

postgresql date_trunc till godtycklig precision?

Det finns ingen funktion du vill ha, men som sagt i postgresql wiki kan du definiera funktion för dig själv:

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;

Generellt avrunda upp till $2 minuter:

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;


  1. Returnera SETOF rader från PostgreSQL-funktionen

  2. Hur man undviker att använda + i versionsnummer med SQLiteAssetHelper

  3. Verktyg för att arbeta med lagrade procedurer i Oracle, i ett team?

  4. Hur jämför jag två rader från samma tabell (SQL-server)?