好的...我这里有一个查询,它计算服务器的正常运行时间,有时这个正常运行时间超过24小时。我基本上用
select start, end, start-end as real_uptime from uptime
start
和end
成为timestamp with timezone
领域
另外,我有一个存储的函数,将所有real_uptime
周期相加并返回它们...
但是,我甩的价值观start
和end
并把它们放入一个电子表格,并做一些计算在那里,结果已经从处理的内容存储功能了不同(存储函数的返回值越低)。我认为他忽略了real_uptime
超过一天的结果。Postgresql将它们显示为x days hh:mm:ss
...,而我希望它们为hh:mm:ss
(表示以小时为单位的总正常运行时间,不包括整天的时间。
有任何想法吗?
在PostgreSQL中,您可以extract
使用epoch
时间戳记:从1970-01-01 00:00:00开始经过的秒数。使用这些值,您可以轻松构建所需的输出:
SELECT "start", "end", format('%s:%s:%s',
(up_secs / 3600)::int::text, -- hours
lpad(((up_secs % 3600) / 60)::int::text, 2, '0'), -- minutes
lpad((up_secs % 60)::text, 2, '0')) AS uptime -- seconds
FROM (
SELECT "start", "end",
(extract(epoch from "end") - extract(epoch from "start")) AS up_secs
FROM uptime) sub;
该lpad()
功能使分钟和秒始终保持两个字符宽。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句