改变时间'列到' datetime'

时间:2015-09-28 10:25:36

标签: mysql ruby-on-rails datetime

在Rails 3应用程序中我有表subscription_schedules,其中有一列' time'型

示例记录这样的lokks:

#<Subscription::Schedule id: 3504, subscription_id: 4961, scheduled_at: "2000-01-01 01:11:00", primary: true, created_at: "2015-09-28 01:13:34", updated_at: "2015-09-28 01:13:34", active: true>

我想要做的是将scheduled_at转换为datetime。我决定添加新列'temp_scheduled_at',将所有'scheduled_at'保存到其中,使用'scheduled_at'方法将change_column()更改为日期时间,然后将'temp_scheduled_at'中的内容移至{ {1}}。

看起来像这样:

'scheduled_at'

不幸的是那些问题开始了。稍后致电add_column :subscription_schedules, :temp_scheduled_at, :datetime Subscription::Schedule.select {|s| s.subscription}.each do |schedule| schedule.temp_scheduled_at = schedule.scheduled_at schedule.scheduled_at = nil begin schedule.save! rescue => e puts schedule.id end end change_column :subscription_schedules, :scheduled_at, :datetime 之后,我会

Subscription::Scheudule.all

我真的不知道导致此错误的原因是什么,在更改列类型记录时使用&#39;无效日期&#39;看起来像这样:

Invalid date in field 'scheduled_at': 2001-00-00 00:00:00

1 个答案:

答案 0 :(得分:0)

我建议你在mysql查询中使用它。您可以在mysql查询中更改日期时间,并将其作为新列名称引用。与progrmming方式相比,它非常容易。对于前 -

select schedule_at, now() as temp_scheduled_at from tablename; 

您可以阅读更多日期时间功能here