我正在一个遗留的mysql数据库上编写一个rails应用程序,它也提供了一个PHP生产工具。由于这种设置,我无法更改数据库结构。
我遇到的问题是两个表都有一个“时间”属性(持续时间),只要时间低于24:00:00 rails处理这个,但是一旦rails遇到像39:00这样的东西:34我得到这个“ArgumentError:参数超出范围”。
我已经研究过这个问题并看到rails如何处理时间类型,并且根据我的理解,它将其视为日期时间,因此值为39:00:34会抛出此错误。
我需要一些映射/或更改类型转换的方法,所以我没有得到这个错误。将值读取为字符串也没关系。
任何想法都会受到最高的赞赏。 干杯
答案 0 :(得分:0)
我不熟悉Rails所以可以有一个干净的原生解决方案,但是如果所有其他方法都失败了,一个解决方法可能是写入VARCHAR字段,然后运行第二个查询将其复制到TIME mySQL中的字段:
INSERT INTO tablename (name, stringfield)
VALUES ("My Record", "999:02:02");
UPDATE tablename SET datefield = CAST(stringfield as TIME)
WHERE id = LAST_INSERT_ID();