在我的一个表格中,有多个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
。
答案 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)