2013-02-28 115 views
4

我的postresql數據庫中的查詢有問題。我試圖讓一個特定的日期,時間後,最後100個日誌,但是當我使用此查詢:postgresql中的日期比較不起作用

select * from log_entry WHERE array['MESSAGE'] && tags AND CAST(last_updated AS DATE) >= '2013-02-28T16:47:26.394213' ORDER BY last_updated DESC LIMIT 100 

這裏LAST_UPDATED列的類型是:時間戳沒有時區

有時我來自'2013-02-28T16:47:26.394213'之前的日誌,我做錯了什麼?有沒有更好的方式來做到這一點,而不是使用轉換?

在此先感謝!

+0

那麼,你的問題就是:當你將一個時間戳(有或沒有時區)施加到一個日期時,你會截斷時間戳的時間部分。爲什麼不將'2013-02-28T16:47:26.394213''投射到時間戳並直接與'last_updated'比較? – 2013-02-28 17:25:25

回答

4

(由請求評論轉貼)

嗯,有你的問題:當你施放一個時間戳(有或沒有時區)爲日期,您截斷時間戳的時間部分。爲什麼不投'2013-02-28T16:47:26.394213'到一個時間戳,並直接與last_updated比較?

select * from log_entry 
WHERE array['MESSAGE'] && tags 
AND last_updated 
    >= '2013-02-28T16:47:26.394213'::timestamp without time zone 
ORDER BY last_updated DESC LIMIT 100 
0

使用此。這應該工作。

SELECT * FROM log_entry WHERE陣列[ 'MESSAGE'] & &標籤 AND年齡(LAST_UPDATED)

=年齡(現在的()) ORDER BY LAST_UPDATED DESC LIMIT 100