2010-06-25 24 views
6

我用我控制器下面的代碼:的Heroku Postgres的錯誤 - 沒有時區運營商不存在時間戳=整數

@monday = (Time.now).at_beginning_of_week 

    @friday = 5.days.since(@monday)-1.second 

    @sent_emails = ContactEmail.all(:conditions => ['date_sent >= ? and date_sent <= ?', @monday, @friday]) 

雖然它的作品在我的本地SQLite很好,我有一個「操作符不存在時間戳沒有時區=整數「錯誤。

我不完全清楚要更改什麼。

想法?

謝謝。

回答

7

您的參數@monday和@friday是錯誤的,這些必須是「沒有時區的時間戳」類型,但是創建爲整數,請參閱errormessage。 SQLite沒有任何日期時間數據類型,所以日期以文本或整數存儲(unix-timestamps)。這就是爲什麼你不會在SQLite中得到錯誤消息。

確保你創建'2004-10-19 10:23:54'等時間戳,你會沒事的。另一種選擇可能是PostgreSQL功能to_timestamp()將您的unix時間戳轉換爲時間戳:

@sent_emails = ContactEmail.all(:conditions => ['date_sent >= to_timestamp(?) and date_sent <= to_timestamp(?)', @monday, @friday]) 
+0

您會推薦哪一種?在postgres中轉換或爲@monday和@friday創建正確的格式?如果是後者,我怎麼看着ruby defs的時間...不清楚我會做什麼差異...謝謝! – Angela 2010-06-26 17:13:17

+0

使用正確的格式,現在您也可以在此列上使用簡單的索引來加快速度。 – 2010-12-08 20:41:38

相關問題