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

SSIS摄入含前导空格的日期字符串转换及格式修正求助

解决SQL中带前导空白的日期字符串转换与格式化问题

问题根源

你的列中' 8/11/2022'开头的空白不是普通半角空格,大概率是全角空格、制表符或其他Unicode空白字符,导致直接替换普通空格无效,且转换日期时因空白干扰失败。

验证空白字符类型

先执行以下语句确认开头空白的ASCII编码:

SELECT ASCII(LEFT([date], 1)) FROM [Source].[TableName] s_p
  • 普通半角空格:ASCII=32
  • 全角空格:ASCII=12288
  • 制表符:ASCII=9

解决方案

方案1:先清理空白转日期,再格式化输出(推荐)

先移除所有前导空白,将字符串转为date类型,再用FORMAT函数输出指定格式:

SELECT FORMAT(CONVERT(date, LTRIM([date]), 103), 'dd/MM/yyyy') AS FormattedDate
FROM [Source].[TableName] s_p
  • LTRIM([date]):移除所有前导空白(兼容各类空白字符)
  • CONVERT(date, ..., 103):按英国格式(dd/MM/yyyy)将字符串转为日期
  • FORMAT(..., 'dd/MM/yyyy'):将日期格式化为两位日/两位月/四位年的字符串

方案2:直接处理字符串补全前导零

如果不需要转为日期类型,直接对字符串做处理:

SELECT STUFF(
    LTRIM([date]),
    1,
    CHARINDEX('/', LTRIM([date])) - 1,
    RIGHT('0' + LEFT(LTRIM([date]), CHARINDEX('/', LTRIM([date])) - 1), 2)
) AS FormattedDate
FROM [Source].[TableName] s_p
  • 先移除前导空白,提取日部分并补前导零到两位,再替换回原字符串对应位置

方案3:针对特定空白字符替换

如果验证后确认是全角空格,直接替换全角空格为0:

SELECT REPLACE([date], N' ', '0') AS FormattedDate -- 引号内为全角空格
FROM [Source].[TableName] s_p

修复日期转换报错

执行以下语句即可正常转换日期:

SELECT CONVERT(date, LTRIM([date]), 103) FROM [Source].[TableName] s_p

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 03:01:00