Postgres: how do you round a timestamp up or down to the nearest minute?

前端 未结 4 1285
星月不相逢
星月不相逢 2020-12-14 13:37

Is there a postgresql function that will return a timestamp rounded to the nearest minute? The input value is a timestamp and the return value should be a timestamp.

4条回答
  •  北海茫月
    2020-12-14 14:10

    to round down a timestamp

    CREATE or replace FUNCTION date_round_down(base_date timestamptz, round_interval INTERVAL) 
    RETURNS timestamptz AS $BODY$
                SELECT TO_TIMESTAMP(EXTRACT(epoch FROM date_trunc('hour', $1))::INTEGER + trunc((EXTRACT(epoch FROM $1)::INTEGER - EXTRACT(epoch FROM date_trunc('hour', $1))::INTEGER) / EXTRACT(epoch FROM $2)::INTEGER) * EXTRACT(epoch FROM $2)::INTEGER) 
    $BODY$ LANGUAGE SQL STABLE;
    
    SELECT date_round_down('2017-06-02 16:39:35', '15 minutes') -- 2017-06-02 16:30:35
    

提交回复
热议问题