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

使用date_format(str_to_date())插入日期至datetime列报错求助

解决MySQL插入2018年周日到datetime列的问题

咱们先一步步拆解你遇到的问题,找到核心坑点:

1. 去掉多余的子查询包裹

你的测试查询本身是正确的,但插入语句里完全没必要把日期转换函数包在SELECT子查询里——直接写函数表达式就行。比如把:

(select date_format(str_to_date("January 14 2018","%M %d %Y"),"%Y-%m-%d %I:%i"))

改成:

date_format(str_to_date("January 14 2018","%M %d %Y"),"%Y-%m-%d %H:%i:%s")

这里把%I(12小时制)换成%H(24小时制),同时补全秒的部分%s,因为MySQL的datetime类型标准格式是YYYY-MM-DD HH:MM:SS,避免因格式不完整触发报错。

2. 别用'0000-00-00 00:00:00'当无效日期

如果你的end字段是datetime类型,在MySQL的严格模式(比如sql_mode包含NO_ZERO_DATE)下,'0000-00-00 00:00:00'是不允许的。建议换成NULL,或者如果需要表示周日的结束时间,可以写成当天的23:59:59,比如:

date_format(str_to_date("January 14 2018","%M %d %Y"),"%Y-%m-%d 23:59:59")

3. 修改后的单条插入语句示例

调整后的正确插入语句应该是这样的:

INSERT INTO `events` (`id`, `title`, `color`, `start`, `end`) 
VALUES (NULL, 'Sunday', '#FFE761', 
        date_format(str_to_date("January 14 2018","%M %d %Y"),"%Y-%m-%d 00:00:00"), 
        date_format(str_to_date("January 14 2018","%M %d %Y"),"%Y-%m-%d 23:59:59"));

4. 批量插入更高效(适合所有周日)

既然你已经有了2018年所有周日的日期列表,不如直接批量插入,不用逐条写:

INSERT INTO `events` (`title`, `color`, `start`, `end`) 
VALUES 
('Sunday', '#FFE761', date_format(str_to_date("January 07 2018","%M %d %Y"),"%Y-%m-%d 00:00:00"), date_format(str_to_date("January 07 2018","%M %d %Y"),"%Y-%m-%d 23:59:59")),
('Sunday', '#FFE761', date_format(str_to_date("January 14 2018","%M %d %Y"),"%Y-%m-%d 00:00:00"), date_format(str_to_date("January 14 2018","%M %d %Y"),"%Y-%m-%d 23:59:59")),
-- 这里继续添加其他周日的记录
('Sunday', '#FFE761', date_format(str_to_date("December 30 2018","%M %d %Y"),"%Y-%m-%d 00:00:00"), date_format(str_to_date("December 30 2018","%M %d %Y"),"%Y-%m-%d 23:59:59"));

如果你的日期列表是现成的,还可以用Python/Shell脚本自动生成这些插入行,省得手动敲。

5. 排查剩余问题的小技巧

如果还是报错,试试这几步:

  • 单独执行日期转换函数,确认输出格式完全匹配start字段的datetime类型;
  • 执行SHOW ERRORS;获取具体错误信息,比如是格式不匹配、字段类型不对还是权限问题;
  • 检查id字段是否是自增主键——如果是,VALUES里的NULL没问题;如果不是,得指定合法的id值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:49:39