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

MySQL中如何按YYYY-MM-DD格式插入日期并转换现有日期数据

解决MySQL插入MM/DD/YYYY格式日期的问题

首先修正你的CREATE TABLE语句语法错误(缺少闭合括号):

CREATE TABLE ORDERS (
    ORD_NUM NUMERIC(6,0) NOT NULL PRIMARY KEY, 
    ORD_AMOUNT NUMERIC(12,2) NOT NULL, 
    ORD_DATE DATE NOT NULL
);

MySQL的DATE类型仅接受YYYY-MM-DD格式的合法日期值,直接插入MM/DD/YYYY格式的字符串会触发格式错误,导致数据无法写入——这也是你之前执行UPDATE语句无效的核心原因:根本没有数据被成功插入到表中。

正确的插入方式:用STR_TO_DATE转换日期格式

在插入阶段,利用STR_TO_DATE()函数将MM/DD/YYYY格式的字符串转换为MySQL支持的DATE类型,具体执行语句如下:

INSERT INTO ORDERS VALUES('200100', '1000.00', STR_TO_DATE('08/01/2008', '%m/%d/%Y'));
INSERT INTO ORDERS VALUES('200110', '3000.00', STR_TO_DATE('04/15/2008', '%m/%d/%Y'));
INSERT INTO ORDERS VALUES('200107', '4500.00', STR_TO_DATE('08/30/2008', '%m/%d/%Y'));

大量数据批量处理建议

如果有大量此类格式的日期数据需要导入,可选择以下方式:

  • 若通过脚本生成INSERT语句,批量将日期字段替换为STR_TO_DATE('原日期字符串', '%m/%d/%Y')格式
  • 若从文件导入,使用LOAD DATA INFILE时通过SET子句统一转换日期:
LOAD DATA INFILE 'your_data_file.csv'
INTO TABLE ORDERS
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
(ORD_NUM, ORD_AMOUNT, @raw_date)
SET ORD_DATE = STR_TO_DATE(@raw_date, '%m/%d/%Y');

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 02:36:29