Как работать с датами 0000-00-00 00:00:00 в MySQL 5.7 без изменения режима SQL - PullRequest
0 голосов
/ 18 сентября 2018

Я недавно переключился на MySQL 5.7, что вызывает проблемы вокруг datetime.У меня есть datetime в моей базе данных со значением по умолчанию 0000-00-00 00:00:00.MySQL 5.7, похоже, не нравится этот тип значения по умолчанию.Я понимаю, что могу установить sql_mode = '', но, скажем, я не хочу этого делать (придерживаясь строгого режима по умолчанию), какой подход будет наилучшим?

Я мог бы сначала обновить все значения:

UPDATE mycolumn SET field_datetime = NULL WHERE field_datetime='0000-00-00 00:00:00'

А затем отредактируйте поле даты и времени, чтобы использовать NULL по умолчанию.

Это будет в будущем?Я предполагаю, что MySQL 5.7 имеет свои причины запретить 0000-00-00 00:00:00.

1 Ответ

0 голосов
/ 18 сентября 2018

NULL в качестве значения для любого пустого поля является будущим и довольно вменяемым. Код вашего приложения необходимо проверить, чтобы убедиться, что он правильно обрабатывает NULL.

Принятие 0000-00-00 00:00:00 в качестве действительной даты и времени было плохим выбором от разработчиков MySQL много лет назад и просто охватывало проблемы, а не решало их. Становится более строгим в SQL, похоже, что MySQL постепенно выбирается, даже если разработчикам приложений необходимо обновить свои структуры и код, чтобы они были более корректными (и, возможно, исправляли скрытые ошибки).

...