2014-01-29 108 views
0

提取的天數,我試圖讓類似以下的查詢工作:根據計算出的間隔

SELECT EXTRACT(DAY FROM INTERVAL to_date - from_date) FROM histories; 

在引用表中,TO_DATE和FROM_DATE是timestamp類型的無時區。像

SELECT to_date - from_date FROM histories; 

常規查詢給了我時間間隔的結果,如'65天04:58:09.99' 。但是在第一個查詢中使用這個表達式會給我一個錯誤:類型區間的無效輸入語法。我嘗試了各種引用,甚至嵌套查詢,但沒有運氣。這可以做到嗎?

+0

你的第一個表達式是沒有意義的。你想用它達到什麼目的? –

回答

0

SELECT EXTRACT(DAY FROM INTERVAL to_date - from_date) FROM histories;

這是沒有意義的。 INTERVAL xxx是區間文字的語法。所以INTERVAL from_date是一個語法錯誤,因爲from_date不是一個文字。如果你的代碼真的看起來更像INTERVAL '2012-02-01'那麼這將失敗,因爲2012-02-01INTERVAL的無效語法。

這裏的INTERVAL這個關鍵詞就是噪音。我懷疑你誤解了文檔中的一個例子。刪除它,表達會很好。

我猜你試圖讓兩個日期之間的天數表示爲timestamptimestamptz

如果是這樣,無論是兩投迄今:

SELECT to_date::date - from_date::date FROM histories; 

或獲得的間隔,然後提取一天組件:

SELECT extract(day from to_date - from_date) FROM histories;