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,后续插入时无需手动指定该列:
- 先修改表结构:
ALTER TABLE `statistics` MODIFY COLUMN `datetime` DATETIME DEFAULT CURRENT_TIMESTAMP;
- 简化后的插入语句:
INSERT INTO `statistics` (`chat_id`, `user_id`, `message_id`, `ai_unique`) VALUES ('988', '767', '98765', NULL);
内容的提问来源于stack exchange,提问作者Uli
相关产品推荐
相关产品推荐

