如何使用PL / pgSQL循环到最近的X分钟? [英] How to round to nearest X minutes with PL/pgSQL?
本文介绍了如何使用PL / pgSQL循环到最近的X分钟?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我最近可以四舍五入到几分钟?
How I can round to nearest X minutes?
这是我的尝试:
DECLARE
_stamp ALIAS FOR $1; -- timestamp
_nearest ALIAS FOR $2; -- minutes (integer)
_minutes decimal;
_ret timestamp;
BEGIN
_ret := date_trunc('minute', _stamp);
SELECT EXTRACT (minute FROM _ret)::integer INTO _minutes;
IF (_minutes % _nearest < (_nearest / 2)) THEN
RETURN _ret + _minutes * interval '1 minute';
ELSE
RETURN _ret - _minutes * interval '1 minute';
END IF;
RETURN _ret;
END;
示例:
SELECT round_to_nearest_minute ('2010-01-01 12:34:56', 15);
应该返回
2010-01-01 12:30:00
推荐答案
而不是添加或减去
_minutes * interval'1分钟'
你应该减去
(_分钟%_nearest)*间隔'1分钟'
或添加
(_最近 - (_minutes%_nearest))*间隔'1分钟'
这篇关于如何使用PL / pgSQL循环到最近的X分钟?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文