mysql - 如何在不改变SQL模式的情况下处理0000-00-00 00 :00:00 datetimes in MySQL 5. 7

标签 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'

然后编辑日期时间字段以使用 NULL 作为默认值。

这能证明 future 吗?我认为 MySQL 5.7 有其不允许的理由 0000-00-00 00:00:00 .

最佳答案

NULL 作为任何空字段的值是面向 future 的并且相当理智。您的应用程序代码需要进行测试,以确保它能够正确处理 NULL

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

关于mysql - 如何在不改变SQL模式的情况下处理0000-00-00 00 :00:00 datetimes in MySQL 5. 7,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52375728/

相关文章:

php - 尽管方法被多次调用,但仅从数据库查询一次

mysql - 1292 : Incorrect datetime value: '' for column at row 1

emacs - sql-set-sqli-buffer "there is no suitable sqli buffer"

python - 如何从 Python 3 中的字符串类型矩阵获取浮点矩阵?字符串矩阵是元组的一部分作为列

php 登录验证返回 500(内部服务器错误)

excel - 将 'year'“天数”更改为 mm-dd-year 的公式

jquery - jquery 的格式化日期在 IE 中显示 NaN

python的日期时间和月末

mysql - 为什么我不能永久更改 sql_mode?

php - 货币 SQL 数据结构