MySQL错误:无法执行MySQL语句:日期时间值不正确?

时间:2017-03-21 08:49:51

标签: mysql datetime timestamp

在我的一个表格中,有多个TIMESTAMP类型的列。我必须在这些列中插入未来TIMESTAMP。执行查询后发生错误。

MySQL error: Could not execute MySQL-statement: Incorrect datetime value: '2060-12-22 10:35:13' for column 'goal_end_time'. 

在mysql The DATE, DATETIME, and TIMESTAMP Types的官方文档中,提到它只能存储到2038-01-19 03:14:07

我不能使用DATE类型,因为我也需要时间和DATE

4 个答案:

答案 0 :(得分:0)

您是否有必要在桌面上输入值2060-12-22 10:35:13或将来的任何日期?官方文档的支持最多只有2038-01-19 03:14:07。我认为它正在抛出错误,因为在您使用的时间戳中,2060已经过了2038年,这是系统的限制。如果您只需设置未来日期,则可能需要在2038年之前考虑一些事项,例如2037-12-22 10:35:13而不是2060-12-22 10:35:13

答案 1 :(得分:0)

我的建议是,表是空的还是非常大的情况是将create语句导出为.sql文件,根据需要重写它们。如果您有任何现有数据,也可以执行相同的操作,即导出插入语句(我建议在单独的文件中将其作为create语句执行)。最后,删除表并执行第一个create语句,然后插入。

您可以使用MySQL安装中包含的mysqldump命令,也可以安装MySQL Workbench,这是一个免费的图形工具,它以非常可定制的方式包含此选项,而无需查找特定的命令选项。

答案 2 :(得分:0)

正如用户rocky在此问题的评论部分所指出的,将我的专栏名称从TIMESTAMP更改为DATETIME对我有用。

  

DATETIME类型用于包含日期和时间部分的值。 MySQL以'YYYY-MM-DD HH:MM:SS'格式检索并显示DATETIME值。支持的范围是'1000-01-01 00:00:00'到'9999-12-31 23:59:59'。

答案 3 :(得分:0)

非常简单...在mysqld.conf(/etc/mysql/mysql.conf.d/mysqld.cnf)中找到SQLMODE = ....行,并删除NO_ZERO_DATE和NO_ZERO_IN_DATE。导入您的sqlfile。并还原您的更改。别忘了重启mysql ->where('first_name','John')->where('last_name','Doe')

如果找不到此行,请添加以下内容:

(/etc/init.d/mysql restart OR service mysql restart)