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

如何将YYYY-MM-DD日期字段转为Mon-YY格式并保留日期类型?

日期格式转换(保留日期类型)解决方案

首先明确:日期字段类型本身不存储显示格式,它只存储底层的时间/日期值。你要的Mon-YY是显示层面的格式,若想保留日期类型,本质是保留该日期所在月份的时间锚点(通常取当月第一天),之后可通过客户端工具或数据库函数控制显示格式;如果只是需要Mon-YY格式的输出,也可以直接生成对应字符串(但这会是字符串类型)。

以下分主流数据库给出具体方案:

MySQL

  • 保留日期类型(得到当月第一天的DATE类型值):
SELECT DATE_FORMAT(date_col, '%Y-%m-01') AS month_start FROM your_table;

这个结果是DATE类型,客户端显示时可设置格式为Mon-YY;若要直接输出Mon-YY格式的字符串:

SELECT DATE_FORMAT(date_col, '%b-%y') AS formatted_date FROM your_table;

PostgreSQL

  • 保留日期类型(截断到当月第一天):
SELECT date_trunc('month', date_col)::date AS month_start FROM your_table;
  • 直接输出Mon-YY格式的字符串:
SELECT to_char(date_col, 'Mon-YY') AS formatted_date FROM your_table;

SQL Server

  • 保留日期类型(构造当月第一天的日期):
SELECT DATEFROMPARTS(YEAR(date_col), MONTH(date_col), 1) AS month_start FROM your_table;
  • 直接输出Mon-YY格式的字符串:
SELECT FORMAT(date_col, 'MMM-yy') AS formatted_date FROM your_table;

关于你之前的错误

你用to_date(monthname(Date) || ' ' || year(Date))报错,是因为to_date()需要明确指定输入字符串的格式匹配规则。比如在MySQL里应该写成:

SELECT STR_TO_DATE(monthname(date_col) || ' ' || year(date_col), '%M %Y') FROM your_table;

但这种写法绕了弯路,直接用上面的内置日期函数更简洁高效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 00:35:16