Ruby: Mysql timestamp / datetime problem - PullRequest
       6

Ruby: Mysql timestamp / datetime problem

0 голосов
/ 23 марта 2009

Есть ли решение проблемы '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 ]

2 голосов
/ 23 марта 2009

Таким образом, по умолчанию установлено значение «0000-00-00 00:00:00», и вы не можете его изменить. Я откопал архивы списков рассылки ruby-dbi и нашел следующее объяснение:

Проблема с последним случаем что он не может быть приведен к DateTime объект, потому что это не является действительным время ... Честно говоря, я удивлен, MySQL позволяет это вообще. В любом случае, вы будете необходимо отключить преобразование типов (см. DBI.convert_types=) чтобы получить это значение по умолчанию для работы или изменить его и все случаи этого в вашем базы данных, или используйте bind_coltype для лечения вместо этого это как строка.

См. этот архив списка рассылки .

0 голосов
/ 22 сентября 2009

Вы можете просто привести «0000-00-00 00:00:00» к NULL:

ВЫБРАТЬ ЕСЛИ (mytime = "0000-00-00 00:00:00", NULL, mytime) ИЗ mytable;

0 голосов
/ 23 марта 2009

Я обычно объявляю свои даты приема NULL, например ::1001

dtime DATETIME NULL DEFAULT NULL

Таким образом, я могу проверить, является ли поле НЕДЕЙСТВИТЕЛЬНЫМ, а не поле = '0000-00-00 00:00:00'.

...