我正在使用带有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";
但仍然存在相同的错误消息。
有什么建议吗?
感谢。
答案 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
而不是相反 - 这种方式在不同的环境中无法区分