psql date_trunc问题

时间:2012-03-27 07:23:32

标签: sql postgresql

我的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小时因为它的结果,任何建议尝试什么?提前谢谢

1 个答案:

答案 0 :(得分: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"