Ruby:Mysql时间戳/日期时间问题

时间:2009-03-23 15:30:26

标签: mysql ruby datetime timestamp dbi

是否存在“0000-00-00 00:00:00”问题的解决方案,而不更改表格?

我在此查询中有“[]”:

dbh.select_all("select j.n, j.name, j.dsc, j.flag, j.td from job j where j.td='0000-00-00 00:00:00'")

我为此寻找解决方案:http://rubyforge.org/tracker/index.php?func=detail&aid=22243&group_id=234&atid=967

3 个答案:

答案 0 :(得分:2)

所以你的默认值是'0000-00-00 00:00:00',你无法改变它。我挖出了我的ruby-dbi邮件列表档案,并找到了以下解释:

  

后一种情况的问题是   它不能被强制转换为DateTime   对象,因为它不是有效的   时间......老实说,我很惊讶mysql   完全允许它。无论哪种方式,你都会   需要关闭类型转换(请参阅   DBI.convert_types=)得到这个   默认值可以工作或更改它   在你的所有出现   数据库,或使用bind_coltype来处理   它改为字符串。

请参阅this mailing list archive

答案 1 :(得分:0)

我通常将我的日期时间声明为接受NULL,例如:

dtime DATETIME NULL DEFAULT NULL

这样我可以检查字段是否为空而不是字段='0000-00-00 00:00:00'。

答案 2 :(得分:0)

您可以将“0000-00-00 00:00:00”转换为NULL:

SELECT IF(mytime =“0000-00-00 00:00:00”,NULL,mytime)FROM mytable;