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

如何提取日期中第二个'/'左侧内容(仅保留月日部分)

提取日期字段中的月日部分的几种方案

这个问题我之前帮朋友解决过,确实用LEFT()函数会因为日期格式长度不一致踩坑,比如短月份/日期的情况就会多截到年份的字符。下面给你几种靠谱的方法,分场景来说:

场景1:日期字段是字符串类型

如果你的日期存在字符串字段里(比如varchar类型),可以用SUBSTRING结合CHARINDEX精准截取到第二个斜杠之前的内容:

SUBSTRING(date_column, 1, CHARINDEX('/', date_column, CHARINDEX('/', date_column) + 1) - 1)

原理拆解:

  • 第一个CHARINDEX('/', date_column)找到第一个斜杠的位置(比如5/5/2018里第一个/在第2位)
  • 第二个CHARINDEX('/', date_column, 位置+1)从第一个斜杠的下一位开始找第二个斜杠的位置(比如5/5/2018里第二个/在第4位)
  • 最后用SUBSTRING截取从第1位到第二个斜杠前一位的内容,就能得到5/5或者10/12

另外还有个小技巧,用REPLACE配合PARSENAME(适合SQL Server这类支持PARSENAME的数据库):

SELECT PARSENAME(REPLACE(date_column, '/', '.'), 3) + '/' + PARSENAME(REPLACE(date_column, '/', '.'), 2) AS month_day

原理是把斜杠换成点,用PARSENAME按点分割字符串,取第3段(月)和第2段(日)拼接起来。

场景2:日期字段是日期类型(推荐)

如果你的字段本身是date/datetime类型,那直接用数据库自带的格式化函数更稳妥,不会因为字符串格式异常出问题:

  • SQL Server:用FORMAT函数,指定格式'M/d'(自动去掉前导零)
    SELECT FORMAT(date_column, 'M/d') AS month_day
    
  • MySQL:用DATE_FORMAT,格式符%c/%e(%c是无前导零的月份,%e是无前导零的日期)
    SELECT DATE_FORMAT(date_column, '%c/%e') AS month_day
    
  • PostgreSQL:用TO_CHAR,搭配FM修饰符去掉前导零
    SELECT TO_CHAR(date_column, 'FMMM/FMDD') AS month_day
    

不管哪种场景,都能精准得到你想要的'10/12'或'5/5'格式~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:25:40