2012-03-27 79 views
0

我在PSQL數據庫的查詢,但我有一個小問題:PSQL date_trunc問題

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

從另一個時間戳減去時間戳產生一個區間值。您必須將該間隔轉換爲數小時才能顯示。

要將間隔轉換爲例如小時,您使用以下內容:

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" 
+0

三江源非常多的是,工作的究竟如何現在我需要它來 – Zenaphor 2012-03-27 10:02:44