是否存在“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
答案 0 :(得分:2)
所以你的默认值是'0000-00-00 00:00:00',你无法改变它。我挖出了我的ruby-dbi邮件列表档案,并找到了以下解释:
后一种情况的问题是 它不能被强制转换为DateTime 对象,因为它不是有效的 时间......老实说,我很惊讶mysql 完全允许它。无论哪种方式,你都会 需要关闭类型转换(请参阅
DBI.convert_types=
)得到这个 默认值可以工作或更改它 在你的所有出现 数据库,或使用bind_coltype
来处理 它改为字符串。
答案 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;