У меня есть база данных Mysql, где хранятся даты заказов клиентов.
Дата генерируется date('Ym-d')
функции php date('Ym-d')
. Две записи в моей базе данных имеют значения '0000-00-00'
. Один из них был создан клиентом из Австралии, а другой – клиентом из Италии. Другие 5000 заказов в порядке.
Мой вопрос: как можно создать такую дату? Может ли это быть с отдельными настройками браузера?
Спасибо за помощь
Единственная причина, по которой я могу найти, – либо ваш клиент ввел неправильный формат даты, либо он ввел пустую строку. Помните, что формат даты в Mysql равен yyyy-mm-dd.
Это означает, что MySQL получил недопустимое значение, не имеющее значения вообще. Проверьте свой код, чтобы он всегда имел действительное значение для этой даты.
Я заметил, что у меня была такая же точная проблема, и оказалось, что я просто не добавлял одинарные кавычки вокруг моей переменной $ date при ее вставке, поэтому она вставляла нулевое или пустое значение, которое появилось как 0000-00- 00 в базе данных. Как только я поставил '$ date' вместо $ date в мой оператор insert, значение появилось как ожидалось.
Проверьте это сообщение по умолчанию «0000-00-00 00:00:00» или «null» . Он ответит на ваш вопрос. Вероятно, переменные года, месяца и дня по их коду на стороне клиента не были инициализированы.
EDIT. Если это не так, то, похоже, recently changed the Date-related column
вы recently changed the Date-related column
в базе данных от VARCHAR or TEXT
до DATE
.
MySql changes
все значения NULL
в этом случае на '0000-00-00'
. Итак, если какое-то время назад, дата не была обязательным полем в пользовательском интерфейсе, и если она была принята как NULL, то это произошло.
Это может быть так, что у вас есть чисто запрограммированная или устаревшая функция mysql
. Например: CURDATE() + 5
правильно CURDATE() + 5
дату в БД, однако, если пользователь сделает это в 2016-12-28
БД покажет 0000-00-00
. Он будет работать нормально, если текущая дата 2016-12-20. Абсолютно правильной функцией будет CURDATE() + INTERVAL 5 DAY
. Вы пишете в начале января, так что, возможно, у вас есть аналогичная проблема.