You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何将char类型日期字段转换为2018 / 01格式?

没问题,我来帮你搞定这个日期格式转换的需求!因为不同数据库的日期处理函数不太一样,下面我给你整理了几种常用数据库的具体实现方法,你可以根据自己用的数据库来选:

MySQL 实现方法

首先需要把char类型的字符串转成日期类型,给年份加1后再格式化输出:

SELECT DATE_FORMAT(
    DATE_ADD(STR_TO_DATE(your_date_field, '%d%b%Y'), INTERVAL 1 YEAR),
    '%Y / %m'
) AS formatted_date
FROM your_table;
  • STR_TO_DATE(your_date_field, '%d%b%Y'):把"01jan2017"这样的字符串转成MySQL可识别的日期类型,%d代表两位日期,%b代表缩写月份(不区分大小写),%Y代表四位年份。
  • DATE_ADD(..., INTERVAL 1 YEAR):给转换后的日期加1年,得到2018年的日期。
  • DATE_FORMAT(..., '%Y / %m'):把日期格式化成"2018 / 01"的样式,%Y是四位年份,%m是两位月份,中间保留空格+斜杠+空格。

Oracle 实现方法

Oracle可以用TO_DATE转日期,ADD_MONTHS加一年,再用TO_CHAR格式化:

SELECT TO_CHAR(
    ADD_MONTHS(TO_DATE(your_date_field, 'DDMONYYYY'), 12),
    'YYYY / MM'
) AS formatted_date
FROM your_table;
  • TO_DATE(your_date_field, 'DDMONYYYY'):将字符串转换为日期类型,DD是两位日期,MON是缩写月份,YYYY是四位年份。
  • ADD_MONTHS(..., 12):给日期增加12个月(即1年)。
  • TO_CHAR(..., 'YYYY / MM'):按照要求的格式输出日期字符串。

SQL Server 实现方法

SQL Server用CONVERT转日期,DATEADD加一年,再用FORMAT指定格式:

SELECT FORMAT(
    DATEADD(YEAR, 1, CONVERT(DATE, your_date_field, 106)),
    'yyyy / MM'
) AS formatted_date
FROM your_table;
  • CONVERT(DATE, your_date_field, 106):把字符串转成日期类型,格式码106对应dd mon yyyy的样式。
  • DATEADD(YEAR, 1, ...):给日期加1年。
  • FORMAT(..., 'yyyy / MM'):输出指定格式的字符串,注意这里的格式符是小写的yyyy和大写的MM(确保月份是两位数字)。

如果你的字段里月份是小写的(比如jan),不用担心,上面这些数据库的日期转换函数都不区分大小写,能正常识别。

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

火山引擎 最新活动