2012-08-01 49 views
0

我已经有一个在CakePHP和MySQL上运行的旧数据库,它正在迁移到Postgres数据库上的新Rails应用程序,并具有非常不同的结构。我有一小部分迁移让我适应,我希望这里有人能指引我朝着正确的方向发展。活动记录和迁移畸形日期

本质上,有日期列(MySQL类型日期)包含格式不正确的日期。大多数格式不正确的日期格式为'2012-08-00',并且MySQL2适配器在这些日志上扼杀(显然00不是当月的有效日期)。如果我能将他们纳入模型,我可以做必要的转换,将他们变成更完整的新格式。即使将它们作为字符串从数据库中取出也是足够的,我可以通过这种方式进行必要的操作。

我得到以下错误:

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

每当我试图选择系统中的无效日期之一。表格中有3800行,我估计大约有一半人试图通过并手工修改它们会花费很多时间(但不会过多,如果这是它需要完成的方式)。

任何建议将不胜感激!

+0

我只是大规模更换“-00”的“-01”在MySQL中使用REPLACE(不知道你能做到这一点的日期但它应该 – 2012-08-01 21:06:38

+0

@AnthonyAlberto,我会考虑看看我是否可以做到这一点,也许与正则表达式。 – EricBoersma 2012-08-01 21:10:40

回答

1

像这样的东西应该工作(未测试):

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

夜间睡眠和不同的方法导致了不同的答案,但我后来做了检查,已经工作了。感谢您的帮助! – EricBoersma 2012-08-02 16:12:17

+0

等待30分钟解决方案的时间太艰难了...... :) – tweak2 2012-10-03 01:48:21