【问题标题】:psql date_trunc issuepsql date_trunc 问题
【发布时间】:2012-03-27 07:23:32
【问题描述】:

我在我的 psql 数据库中有一个查询,但我有一个小问题:

select sge_job.j_id,
       sge_job_usage.ju_id,
       sge_job_usage.ju_slots,
       date_trunc ('hour',sge_job_usage.ju_start_time) – date_trunc ('hour',sge_job.j_submission_time) as "Wait time"
from sge_job,
     sge_job_usage
where sge_job.j_id = sge_job_usage.ju_id
and   sge_job_usage.ju_start_time >= sge_job.j_submission_time

问题是我获得的 ju_start_time 和 j_submission_time 的信息会保留在小时格式内,但其中一些会包含例如 3 天 12 小时的信息。

它们都是没有时区的时间戳,但我需要它来计算是否为 2 天并将它们添加到小时中。所以我目前的输出是:

71 |    71 |        1 | 01:00:00
72 |    72 |        1 | 01:00:00
73 |    73 |        2 | 4 days 03:00:00
74 |    74 |        2 | 01:00:00
75 |    75 |        2 | 03:00:00
76 |    76 |        2 | 03:00:00
77 |    77 |        1 | 22:00:00
78 |    78 |        1 | 18:00:00
79 |    79 |        2 | 19:00:00
80 |    80 |        2 | 20:00:00
81 |    81 |        2 | 20:00:00
82 |    82 |        2 | 11:00:00
83 |    83 |        2 | 21:00:00
84 |    84 |        2 | 1 day 10:00:00
85 |    85 |        2 | 1 day 17:00:00
86 |    86 |        2 | 2 days 17:00:00

所以使用 date_trunc 小时它会将我的时间格式更改为多少小时,但我似乎无法获得一个函数来摆脱我的日子并将它们转换为小时格式,所以我希望 86 的列是 48结果是小时(2 天)+ 17 = 65 小时,有什么建议可以尝试吗?提前致谢

【问题讨论】:

    标签: sql postgresql


    【解决方案1】:

    从另一个时间戳中减去一个时间戳会产生一个间隔值。您必须将该时间间隔转换为小时才能显示。

    将间隔转换为例如小时,您使用以下内容:

    extract(epoch from <interval_value>) / 3600
    

    epoch 返回秒数。将该值除以 3600 即可得到数小时。

    在你的情况下,以下应该做你想做的事:

    extract(epoch from date_trunc('hour',sge_job_usage.ju_start_time) – date_trunc ('hour',sge_job.j_submission_time)) / 3600 as "Wait time"
    

    【讨论】:

    • 非常感谢,工作正是我现在需要的方式
    猜你喜欢
    • 2020-07-16
    • 1970-01-01
    • 1970-01-01
    • 2021-12-12
    • 2021-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多