Rails忽略了我的datetime列的时间部分

时间:2009-01-22 16:47:42

标签: ruby-on-rails datetime

出于某种原因,我无法将时间保存到MySQL。我的专栏是一个日期时间,我在测试时也试过使用时间戳。这是我的控制台会话:

$ ./script/console
Loading development environment (Rails 2.1.0)
>> Event.find 1
# Event id: 1, name: "Meeting at XXX", start_date: "2009-01-17"
>> e.start_date = Time.now
=> Thu Jan 22 16:40:01 0000 2009
>> e.save
=> true
>> e.start_date
=> Thu Jan 22 16:40:01 0000 2009
>> e.reload
# Event id: 1, name: "Meeting at XXX", start_date: "2009-01-22"

时间部分在更新和查询中被忽略。

2 个答案:

答案 0 :(得分:0)

原来这是由Rails 1或更低天的旧代码引起的。

ActiveSupport::CoreExtensions::Date::Conversions::DATE_FORMATS.merge!(
  :date_month => "%d %b",
  :dd_mm_yyyy => "%d/%m/%y",
  :yyyy_mm_dd  => "%Y-%m-%d"
)

ActiveSupport::CoreExtensions::Time::Conversions::DATE_FORMATS.merge!(
    ActiveSupport::CoreExtensions::Date::Conversions::DATE_FORMATS
)

删除它解决了问题。

答案 1 :(得分:0)

我有一个类似的问题,列的日期部分没有被保存。这是因为类型为time而非datetime