Наткнулся тут на очень опасную особенность MySQL (может правда это свойственно не только ей и вообще является нормальным поведением, но для меня оно стало неожиданным):
В одной из таблиц базы есть поле типа YEAR. Так получилось, что в него попал год "0000", и из админки (написанной на php) я решил его удалить. Вводимый в поле год для удаления intval`ился на стороне сервера, т.е. моё желание удалить год "0000" превратилось в желание удалить год "0". Какое же было мое удивление, когда вместо одной строки, из БД удалилось 800+ строк, и причем строка с годом "0000" осталась на месте. А удалились строки с 2000 годом.
Действительно, SELECT * FROM `table` WHERE `year` = '0' выдает строки с 2000 годом, а ни как не с нулевым. Это связано с тем, что при проведении выборок или присваиваний значений полям числа 0-69 преобразуются в 2000-2069, а 70-99 - в 1970-1999.
Комментариев нет:
Отправить комментарий