SSIS中如何拼接DT_DBTIMESTAMP时间戳列与INT类型整数列
SSIS拼接指定格式字段实现方案
注:你给出的预期Concat结果中第一个日期2001-01-01属于笔误,以下方案均按读取原BeginDate字段的日期值生成2019-01-01实现
方法1:使用派生列转换(最简实现)
- 在数据流任务中添加「派生列」转换组件,与上游数据源组件连接
- 打开派生列编辑器,新增派生列,列名设置为
Concat,填写如下表达式:
(DT_WSTR,10)LEFT((DT_WSTR,23)BeginDate,10) + ";" + (DT_WSTR,10)LEFT((DT_WSTR,23)EndDate,10) + ";" + (DT_WSTR,10)CompanyId
- 表达式说明:
- 先将
DT_DBTIMESTAMP类型的日期字段转换为字符串,取前10位即可得到yyyy-MM-dd格式的日期文本 - 再将INT类型的CompanyId转换为字符串,用分号拼接三个部分即可得到目标结果
- 先将
方法2:使用脚本组件(适合复杂逻辑扩展)
如果后续需要对拼接逻辑做更灵活的调整,可以用C#脚本实现:
- 在数据流任务中添加「脚本组件」,选择转换类型后与上游数据源连接
- 双击打开脚本组件编辑器,在「输入列」 tab 勾选
BeginDate、EndDate、CompanyId三个字段 - 切换到「输入和输出」tab,新增一个输出列,名称设为
Concat,数据类型选择DT_WSTR,长度设置为50即可 - 点击「编辑脚本」按钮,在自动生成的
Input0_ProcessInputRow方法中写入如下代码:
public override void Input0_ProcessInputRow(Input0Buffer Row) { Row.Concat = $"{Row.BeginDate:yyyy-MM-dd};{Row.EndDate:yyyy-MM-dd};{Row.CompanyId}"; }
- 保存脚本关闭编辑器,运行数据流即可生成目标字段
内容的提问来源于stack exchange,提问作者Simon GIS
相关产品推荐
相关产品推荐

