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

MySQL Workbench 8.0中如何将date列格式化为dd-mm-yyyy格式

问题根因

你所用的CONVERT(VARCHAR(255), date, 103)是SQL Server的专属语法,MySQL的CONVERT函数不支持第三个格式编码参数,因此无法返回预期结果;而CAST(date as DATE)仅能做类型转换,无法指定日期的显示格式,转换后默认输出yyyy-mm-dd格式,也不符合你的需求。

可行操作方案

根据你的需求分两种场景处理:

仅查询时临时返回dd-mm-yyyy格式

不需要修改原表结构,直接用MySQL原生的DATE_FORMAT函数做格式化即可:

SELECT 
  date,
  -- 如果导入后date列已经是DATE类型,删掉外层STR_TO_DATE即可
  DATE_FORMAT(STR_TO_DATE(date, '%Y-%m-%d'), '%d-%m-%Y') AS new_date
FROM production_sales_forecast;

常用日期格式符说明:

  • %d:两位数字的日期(01-31)
  • %m:两位数字的月份(01-12)
  • %Y:四位数字的年份
  • %y:两位数字的年份
    如果你的原始date字符串是d/m/yyyy这类斜杠分隔的格式,把STR_TO_DATE的第二个参数改成'%d/%m/%Y'即可匹配解析。

永久统一整表date列的格式

注意:MySQL原生DATE/DATETIME类型的存储层不绑定显示格式,所有格式化操作都是查询时输出的,不建议把日期存为字符串类型,否则后续排序、日期计算都会出现异常。

  1. 先把导入时默认存为文本的date列转为标准DATE类型:
-- 先执行查询校验解析结果,确认所有值都能正确转换
SELECT date, STR_TO_DATE(date, '%Y-%m-%d') AS parsed_date FROM production_sales_forecast;

-- 校验无误后修改列类型
ALTER TABLE production_sales_forecast MODIFY COLUMN date DATE NOT NULL;
  1. 后续所有需要输出dd-mm-yyyy格式的查询,统一用DATE_FORMAT(date, '%d-%m-%Y')做格式化即可。
    如果确实需要在表中持久化存储dd-mm-yyyy格式的字符串值(不推荐),可以新增一列存储格式化结果:
ALTER TABLE production_sales_forecast ADD COLUMN formatted_date VARCHAR(10);
UPDATE production_sales_forecast SET formatted_date = DATE_FORMAT(date, '%d-%m-%Y');

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 09:57:31