活动记录和迁移格式不正确的日期

时间:2012-08-01 21:02:27

标签: mysql ruby-on-rails activerecord

我有一个在CakePHP和MySQL上运行的遗留数据库,它正在迁移到Postgres数据库上的新Rails应用程序,结构完全不同。我有一小段移民让我适应,我希望有人能指出我正确的方向。

基本上,有一些日期列(MySQL类型为Date)包含格式错误的日期。大多数格式错误的日期都是'2012-08-00'形式,并且MySQL2适配器会对这些日期产生影响(显然00不是该月的有效日期)。如果我可以让他们进入模型,我可以进行必要的转换,将它们变成更加完整的新格式。即使将它们作为字符串从数据库中取出也足够了,我可以通过这种方式进行必要的操作。

我收到以下错误:

Mysql2::Error: Invalid date: 2011-12-00

每当我尝试从系统中选择一个无效日期时。表中有3800行,我估计大约有一半是如此试图通过手工修改它们会花费很多(但不是过度,如果需要这样做的话)时间量。

任何建议都将受到高度赞赏!

1 个答案:

答案 0 :(得分:1)

这样的事情应该有效(未经测试):

update [table] set [field] = DATE_ADD([field],INTERVAL 1 day) where day([field]) = '0'