我有一个时间值04:30:25,我想转换成秒.
我知道我们可以提取小时、分钟和秒,然后计算秒数.
SELECT EXTRACT(hour FROM t)*60*60
+ EXTRACT(minutes FROM t)*60
+ EXTRACT(seconds FROM t)
FROM test;
但我想换个方式...
我有一个时间值04:30:25,我想转换成秒.
我知道我们可以提取小时、分钟和秒,然后计算秒数.
SELECT EXTRACT(hour FROM t)*60*60
+ EXTRACT(minutes FROM t)*60
+ EXTRACT(seconds FROM t)
FROM test;
但我想换个方式...
也许你可以让它成为一个功能(只是一个快速设置,请查看并根据需要进行更改)?
CREATE OR REPLACE FUNCTION to_seconds(t text)
RETURNS integer AS
$BODY$
DECLARE
hs INTEGER;
ms INTEGER;
s INTEGER;
BEGIN
SELECT (EXTRACT( HOUR FROM t::time) * 60*60) INTO hs;
SELECT (EXTRACT (MINUTES FROM t::time) * 60) INTO ms;
SELECT (EXTRACT (SECONDS from t::time)) INTO s;
SELECT (hs + ms + s) INTO s;
RETURN s;
END;
$BODY$
LANGUAGE 'plpgsql';
然后在你的查询中使用它:
SELECT to_seconds('04:30:25');
返回:
16225