我有一个时间值04:30:25,我想转换为秒.有没有专门的功能来做这个?
我知道我们可以提取小时,分钟和秒,然后计算秒数.
SELECT EXTRACT(hour FROM t)*60*60
+ EXTRACT(minutes FROM t)*60
+ EXTRACT(seconds FROM t)
FROM test;
Run Code Online (Sandbox Code Playgroud)
但我想要其他一些方式......
zaf*_*zaf 35
你尝试过使用过:
SELECT EXTRACT(EPOCH FROM INTERVAL '04:30:25');
Run Code Online (Sandbox Code Playgroud)
如果这不起作用,您可以尝试使用'1970-01-01'为时间值添加前缀,并尝试:
SELECT EXTRACT(EPOCH FROM TIMESTAMP '1970-01-01 04:30:25');
Run Code Online (Sandbox Code Playgroud)
没有测试,但似乎这些是你唯一的选择.大概.
Jor*_*Jor 14
您可以跳过纪元或间隔,即:
SELECT EXTRACT(EPOCH FROM column ) from table
Run Code Online (Sandbox Code Playgroud)
也许您可以使其功能(只需快速设置,请根据需要进行检查和更改)?
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';
Run Code Online (Sandbox Code Playgroud)
然后在查询中使用它:
SELECT to_seconds('04:30:25');
Run Code Online (Sandbox Code Playgroud)
返回值:
16225
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
31816 次 |
最近记录: |