Есть ли решение проблемы '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
Таким образом, по умолчанию установлено значение «0000-00-00 00:00:00», и вы не можете его изменить. Я откопал архивы списков рассылки ruby-dbi и нашел следующее объяснение:
Проблема с последним случаем что он не может быть приведен к DateTime объект, потому что это не является действительным время ... Честно говоря, я удивлен, MySQL позволяет это вообще. В любом случае, вы будете необходимо отключить преобразование типов (см. DBI.convert_types=) чтобы получить это значение по умолчанию для работы или изменить его и все случаи этого в вашем базы данных, или используйте bind_coltype для лечения вместо этого это как строка.
DBI.convert_types=
bind_coltype
См. этот архив списка рассылки .
Вы можете просто привести «0000-00-00 00:00:00» к NULL:
ВЫБРАТЬ ЕСЛИ (mytime = "0000-00-00 00:00:00", NULL, mytime) ИЗ mytable;
Я обычно объявляю свои даты приема NULL, например ::1001
dtime DATETIME NULL DEFAULT NULL
Таким образом, я могу проверить, является ли поле НЕДЕЙСТВИТЕЛЬНЫМ, а не поле = '0000-00-00 00:00:00'.