You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL 8.0插入CURRENT_TIMESTAMP失败,datetime列存为0000-00-00 00:00:00

问题解决:MySQL datetime列插入CURRENT_TIMESTAMP报错0000-00-00 00:00:00

问题原因

你把CURRENT_TIMESTAMP放在单引号里了,MySQL会将其识别为普通字符串,而这个字符串不符合datetime列的格式规范,因此触发数据截断警告,最终插入无效的默认日期0000-00-00 00:00:00。

解决方法

方法1:移除单引号直接使用CURRENT_TIMESTAMP

修改插入语句,去掉CURRENT_TIMESTAMP的单引号,让MySQL将其识别为时间戳关键字:

INSERT INTO `statistics` (`chat_id`, `user_id`, `message_id`, `datetime`, `ai_unique`) VALUES ('988', '767', '98765', CURRENT_TIMESTAMP, NULL);

方法2:用NOW()函数替代

NOW()和CURRENT_TIMESTAMP功能完全一致,同样不需要加单引号:

INSERT INTO `statistics` (`chat_id`, `user_id`, `message_id`, `datetime`, `ai_unique`) VALUES ('988', '767', '98765', NOW(), NULL);

方法3:设置列默认值(推荐)

如果该列每次插入都需要记录当前时间,可以直接给datetime列设置默认值为CURRENT_TIMESTAMP,后续插入时无需手动指定该列:

  1. 先修改表结构:
ALTER TABLE `statistics` MODIFY COLUMN `datetime` DATETIME DEFAULT CURRENT_TIMESTAMP;
  1. 简化后的插入语句:
INSERT INTO `statistics` (`chat_id`, `user_id`, `message_id`, `ai_unique`) VALUES ('988', '767', '98765', NULL);

内容的提问来源于stack exchange,提问作者Uli

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 09:11:31