在heroku和开发中匹配postgres datestyle

时间:2014-11-05 17:23:00

标签: ruby-on-rails postgresql date heroku

我正在使用带有heroku的rails 4.1。 我对postgres的日期样式有问题。 当我在我的本地机器上运行应用程序时,一切运行良好,但在推送到heroku后它失败了。

来自heroku日志:

(PG::DatetimeFieldOverflow: ERROR:  date/time field value out of range: "30/11/2014", Perhaps you need a different "datestyle" setting.`

我执行了

heroku config:add TZ="Asia/Jerusalem"

heroku pg:psql SET datestyle = "SQL, DMY";

但仍然存在相同的错误消息。

有什么建议吗?

感谢。

2 个答案:

答案 0 :(得分:0)

当您尝试使用不合适的字符串查询数据列时,这是一个问题。

Participant.where(updated_at: "30/11/2014")
PG::DatetimeFieldOverflow: ERROR:  date/time field value out of range: "30/11/2014"
LINE 1: ...articipants"  WHERE "participants"."updated_at" = '30/11/201...
                                                             ^
HINT:  Perhaps you need a different "datestyle" setting.

解析ruby端的字符串或提供格式正确的字符串

答案 1 :(得分:0)

问题在于解析器。

解决不使用:

Date.new(date[0][6..9].to_i, date[0][3..4].to_i,date[0][0..1].to_i)

但是使用:

"#{date[0][6..9].to_i}-#{date[0][3..4].to_i}-#{date[0][0..1].to_i}"

还有一件事是使用-代替\作为分隔符,并将日期用作year-month-day而不是相反 - 这种方式在不同的环境中无法区分