2012-07-17 1263 views
4

我在mac獅子上運行postgres 9 ...在導軌上3.2.3 web應用程序。Postgres日期/時間字段值超出範圍

我在查詢名爲errors_rates_last_updated_at的條目表,該條目目前還不存在。所以,當我鍵入軌控制檯以下:

a = Settings.errors_rate_last_updated_at 

,我收到了= 0000-01-01 00:00:00 -0800。很公平。

然後,當我查詢模型這個日期,與

Error.where('most_recent_notice_at > ?', a) 

我得到這個錯誤:

ActiveRecord::StatementInvalid: PG::Error: ERROR: date/time field value out of range: "0000-01-01 08:00:00.000000" 

有人能幫助我弄清楚是怎麼回事?謝謝!

+5

'0000-01-01 00:00:00 -0800'是無效的日期,因此Postgres無法比較它。 – 2012-07-17 21:42:43

+0

有一個應用程序(寶石)的https://github.com/nickstenning/validates_date_time – 2012-08-18 03:08:35

回答

5

Rails正在使用一個在Pg上無效的MySQL-ism。零時間戳不被允許。

regress=# SELECT CAST('0000-01-01 08:00:00.000000' AS date); 
ERROR: date/time field value out of range: "0000-01-01 08:00:00.000000" 
LINE 1: SELECT CAST('0000-01-01 08:00:00.000000' AS date); 

要了解更多關於你如何讓到這一點,你將需要啓用查詢日誌記錄 - 無論是在PostgreSQL的或軌道 - 並找出查詢導致異常。

相關問題