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

使用SSIS转换日期时间:TXT导入SQL日期格式报错求助

解决SSIS导入TXT日期格式转换报错的方法

问题本质

报错核心是源文件中Feb 24 2023 9:35AM这类日期格式无法被SSIS默认转换逻辑识别,且连接管理器提前设置类型无效,需先以字符串读取日期,再做自定义转换。

具体解决步骤

1. 确保源数据正确读取为字符串

  • 在平面文件连接管理器中,将Action_date列的数据类型设为string [DT_STR],长度设为20以上(避免字符串截断),确保任务能完整读取日期文本,不会在读取阶段失败。

2. 用派生列或脚本组件做自定义转换

方法一:派生列组件

添加派生列组件,新增列(如Converted_ActionDate),使用以下表达式转换:

(DT_DBTIMESTAMP)(SUBSTRING(Action_date, 5, 2) + "/" + SUBSTRING(Action_date, 1, 3) + "/" + SUBSTRING(Action_date, 8, 4) + " " + SUBSTRING(Action_date, 13, LEN(Action_date) - 12))

方法二:脚本组件(更灵活)

  • 脚本组件中选择Action_date作为输入列,新增输出列Converted_ActionDate,类型设为DT_DBTIMESTAMP
  • 在脚本编辑器的输入处理代码中添加:
DateTime parsedDate;
if (DateTime.TryParseExact(Row.ActionDate, "MMM dd yyyy  h:mmtt", System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None, out parsedDate))
{
    Row.ConvertedActionDate = parsedDate;
}
else
{
    // 处理转换失败的情况,比如设为NULL
    Row.ConvertedActionDate_IsNull = true;
}

3. 映射到目标表

将转换后的Converted_ActionDate列映射到SQL表的datetime类型目标列,导入后日期会自动转为2023-02-24 09:35:00.000这类格式。

额外注意

  • 若源日期的空格数量不固定,脚本组件的TryParseExact更可靠,格式字符串里的 h可匹配1-2个空格
  • 可在脚本中添加错误处理,避免单个无效日期导致整个任务失败

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 14:17:21