0

'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

4

3 回答 3

2

所以你的默认值是'0000-00-00 00:00:00',你不能改变它。我挖掘了我的 ruby​​-dbi 邮件列表档案,发现了以下解释:

后一种情况的问题在于它不能被强制转换为 DateTime 对象,因为它不是有效时间......老实说,我很惊讶 mysql 完全允许它。无论哪种方式,您都需要关闭类型转换(请参阅 参考资料 DBI.convert_types=)以使该默认值正常工作或更改它以及数据库中所有出现的它,或者bind_coltype改为将其视为字符串。

请参阅此邮件列表存档

于 2009-03-23T16:49:16.000 回答
0

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

dtime DATETIME NULL DEFAULT NULL

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

于 2009-03-23T15:36:49.203 回答
0

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

从我的表中选择 IF(mytime="0000-00-00 00:00:00",NULL,mytime);

于 2009-09-22T16:58:51.557 回答