如果超过24小时,Mysql“Time”类型在Rails中给出“ArgumentError:参数超出范围”

时间:2010-11-02 09:13:57

标签: mysql ruby-on-rails datetime time types

我正在一个遗留的mysql数据库上编写一个rails应用程序,它也提供了一个PHP生产工具。由于这种设置,我无法更改数据库结构。

我遇到的问题是两个表都有一个“时间”属性(持续时间),只要时间低于24:00:00 rails处理这个,但是一旦rails遇到像39:00这样的东西:34我得到这个“ArgumentError:参数超出范围”。

我已经研究过这个问题并看到rails如何处理时间类型,并且根据我的理解,它将其视为日期时间,因此值为39:00:34会抛出此错误。

我需要一些映射/或更改类型转换的方法,所以我没有得到这个错误。将值读取为字符串也没关系。

任何想法都会受到最高的赞赏。 干杯

1 个答案:

答案 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();