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

如何使用substr、instr等函数将点分隔日期值拼接为无分隔符连续字符串

问题原因

你写的SQL出错核心是对SUBSTRING函数的参数规则理解有误:绝大多数SQL方言中,SUBSTRING(字符串, 起始位置, 截取长度)的第三个参数是要截取的字符长度,不是截取的结束位置。你写的substring(date,6,7)是从第6位开始连续截取7个字符,自然会把后续的分隔符、日部分甚至多余内容包含进来,导致拼接结果异常。

实现方案

方案1:固定格式截取(适合固定长度的yyyy.mm.dd格式)

如果存储的日期字符串严格为10位长度、月和日均补零为两位,直接按固定位置截取即可,写法最简单:

SELECT CONCAT(
  SUBSTRING(date, 1, 4),
  SUBSTRING(date, 6, 2),
  SUBSTRING(date, 9, 2)
) AS formatted_date FROM 你的表名;

方案2:动态识别分隔符截取(适配非固定长度场景)

如果存在月、日为单个数字的情况(如2019.1.5),可以用INSTR函数定位点分隔符的位置再截取,兼容性更强:

SELECT CONCAT(
  -- 截取年:从开头到第一个点之前
  SUBSTRING(date, 1, INSTR(date, '.') - 1),
  -- 截取月:从第一个点之后到第二个点之前
  SUBSTRING(date, INSTR(date, '.') + 1, INSTR(date, '.', INSTR(date, '.') + 1) - INSTR(date, '.') - 1),
  -- 截取日:从第二个点之后到结尾
  SUBSTRING(date, INSTR(date, '.', INSTR(date, '.') + 1) + 1)
) AS formatted_date FROM 你的表名;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 07:42:01