postgresql - 在 PostgreSQL 查询中返回超过 24 小时

标签 postgresql function select timestamp

好的...我这里有一个计算服务器正常运行时间的查询,有时这个正常运行时间超过 24 小时。我基本都用

select start, end, start-end as real_uptime from uptime

startendtimestamp with timezone fields

此外,我还有一个存储函数,可以将一段时间内的所有 real_uptime 相加并返回它们...

但是,我转储值 startend 并将它们放入电子表格中,然后在那里进行计算,结果与存储函数处理的结果不同(存储的函数返回较低的值)。我认为他忽略了大于一天的 real_uptime 结果。 Postgresql 将它们显示为 x days hh:mm:ss... 我希望它们显示为 hh:mm:ss(代表以小时为单位的总正常运行时间,没有 全天数。

有什么想法吗?

最佳答案

在 PostgreSQL 中,您可以从时间戳中提取 纪元:自 1970 年 1 月 1 日 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() 函数使分钟和秒总是两个字符宽。

关于postgresql - 在 PostgreSQL 查询中返回超过 24 小时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32697166/

相关文章:

Angular2 *ngFor 在选择列表中,根据对象中的字符串设置事件

postgresql - Google Cloud SQL Postgres,PG 10 何时可用?

ruby - "PG::ConnectionBad - could not connect to server: Connection refused"Heroku 上的 Sinatra 服务器

php - Javascript 函数不会回显

mysql - 如何从每组行的最小和最大时间戳中选择mysql数据

html - 仅使用 CSS 过滤元素

postgresql - pg_basebackup 完成后 Postgresql 9.3 复制未启动

ruby-on-rails - 使用 Rails 在简单日历上排序约会的高效 Postgresql 查询

function - 正确的 Fortran 函数语法

c - C 中函数类型的大小