Дата Php/Mysql сохранена как '0000-00-00'

У меня есть база данных Mysql, где хранятся даты заказов клиентов.

Дата генерируется функцией php date('Y-m-d'). Две записи в моей базе данных имеют значения '0000-00-00'. Один из них был создан клиентом из Австралии, а другой - клиентом из Италии. Другие 5000 заказов в порядке.

Мой вопрос: как можно создать такую ​​дату? Может ли это быть с отдельными настройками браузера?

Спасибо за помощь

Ответ 1

Единственная причина, по которой я могу найти, - либо ваш клиент ввел неправильный формат даты, либо он ввел пустую строку. Помните, что формат даты в Mysql равен yyyy-mm-dd.

Ответ 2

Это означает, что MySQL был передан недопустимое значение, не имеющее значения вообще. Проверьте свой код, чтобы убедиться, что он всегда имеет допустимое значение для этой даты.

Ответ 3

Я заметил, что у меня была такая же точная проблема, и оказалось, что я просто не добавлял одинарные кавычки вокруг моей переменной $date при ее вставке, поэтому она вставляла нулевое или пустое значение, которое появилось как 0000 -00-00 в базе данных. Как только я положил '$ date' вместо $date в мой оператор insert, значение появилось как ожидалось.

Ответ 4

Отметьте это сообщение default date '0000-00-00 00:00:00' или null. Он ответит на ваш вопрос. Вероятно, переменные года, месяца и дня по их коду на стороне клиента не были инициализированы.

ИЗМЕНИТЬ Если это не так, то, похоже, у вас есть recently changed the Date-related column в базе данных от VARCHAR or TEXT до DATE.

MySql changes все NULL значения в этом случае до '0000-00-00'. Итак, если какое-то время назад, дата не была обязательным полем в пользовательском интерфейсе, и если она была принята как NULL, то это произошло.

Ответ 5

Возможно, у вас есть чисто запрограммированная или устаревшая функция mysql. Например: CURDATE() + 5 правильно введет дату в БД, однако, если пользователь сделает это на 2016-12-28, БД покажет 0000-00-00. Он будет работать нормально, если текущая дата 2016-12-20. Абсолютно правильная функция будет CURDATE() + INTERVAL 5 DAY. Вы пишете в начале января, так что, возможно, у вас есть аналогичная проблема.