2013-05-31 111 views
2

我正在使用postgres 8.3.12和新手。postgresql:生成兩個時間戳之間的時間間隔計數

我有一個列格式如下:'29/04/2013在下午9時27分51秒(或AM)」

我做以下將它們設置爲時間戳:

case when <criteria> to_timestamp(time, 'MM/DD/YYYY at HH:MI:SS AM') as start 
case when <criteria> to_timestamp(time, 'MM/DD/YYYY at HH:MI:SS AM') as end 

我的目標是計算兩個時間戳之間的小時數。

我看着http://www.postgresql.org/docs/current/static/functions-datetime.html

後,我將它們設置爲時間戳,是單純 結束 - 開始爲差;

+3

您需要下車8.3。它不再受支持。 –

+0

是的 - 你真的應該使用*至少8.4.17,如果不是隻是升級到9.2.4。至少如果你使用8.4.17,你將基本上沒有安全問題。 – CmdrMoozy

+0

哦,你可能會試着看看這個問題 - 它或多或少是你所問的同一件事:http://stackoverflow.com/questions/1964544/timestamp-difference-in-hours-for-postgresql – CmdrMoozy

回答

3

假設你已經兩列命名timea和TIMEB,下面將返回它們之間的小時數在PostgreSQL的:

SELECT EXTRACT(EPOCH FROM timea - timeb)/3600 AS hours FROM ...; 

它也可能是需要注意的是有用的:

EXTRACT(EPOCH FROM timea - timeb) 

另外,timea和timeb不需要是列 - 只要它們是時間戳,您可以使用任何您想要的表達式。

會在兩個時間戳之間返回 - 這可以用於計算分鐘數,小時數,天數等 - 無論您喜歡什麼。小時,特別是包含3600秒,所以你簡單地除以3600來獲得小時數。

EXTRACT函數可以爲你做各種強大的事情。我建議看看它的文檔here

相關問題