Postgres日期/时间字段值超出范围

时间:2012-07-17 21:19:39

标签: ruby-on-rails postgresql

我在mac lion上运行postgres 9 ...在rails 3.2.3 web app上运行。

我正在查询表名为errors_rates_last_updated_at的条目,该条目目前尚不存在。因此,当我在rails控制台中键入以下内容时:

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"

有人可以帮我弄清楚发生了什么吗?谢谢!

1 个答案:

答案 0 :(得分: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或rails中启用查询日志记录,并找出导致异常的查询。