如何在不更改SQL模式的情况下在MySQL 5.7中处理0000-00-00 00:00:00日期时间

时间:2018-09-17 21:09:24

标签: mysql datetime sql-mode

我最近切换到MySQL 5.7,这会导致日期时间出现问题。我的数据库中有日期时间,其默认值为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'

然后编辑datetime字段以使用NULL作为默认值。

这会证明未来吗?我认为MySQL 5.7有其禁止的原因 0000-00-00 00:00:00

1 个答案:

答案 0 :(得分:2)

NULL,因为任何空字段的值都可以用于未来,并且相当明智。您的应用程序代码需要进行测试,以确保其正确处理NULL

几年前,对于MySQL开发人员来说,接受0000-00-00 00:00:00作为有效日期时间是一个糟糕的选择,它只是解决问题而不是解决问题。即使应用程序开发人员需要更新其结构和代码以使其更正确(并可能修复隐藏的错误),MySQL仍然越来越严格地对待SQL。