gpt4 book ai didi

ssis - 如何使用派生列转换将字符串 (YYMMDD) 转换为日期时间?

转载 作者:行者123 更新时间:2023-12-04 10:10:04 25 4
gpt4 key购买 nike

我有一个输入文本文件,它由几列组成,即 TransactionID , receiveddt , descriptionrecieveddt列具有以下格式的日期值 120419 (yymmdd) .我想将 .txt 输入文件加载到数据库中,但目标列 recieveddt是数据类型 DateTime .我使用派生列转换将传入的 receiveddt 列值转换为日期时间,如下所示

Derived Column Name  Derived Column     Expression            Data Type 
------------------- ----------------- -------------------- ---------
receiveddate replace reciveddt (DT_DATE)[reciveddt] datetime

我尝试了不同的组合,但在尝试执行类型转换时不断出现错误。

如何使用派生列转换将字符串 (YYMMDD) 转换为日期时间?

最佳答案

表达:

(DT_DATE)("20" + SUBSTRING([ReceivedDt], 1, 2) + "-" + SUBSTRING([ReceivedDt], 3, 2) + "-" + SUBSTRING([ReceivedDt], 5, 2))

为了可读性:
(DT_DATE)("20" + 
SUBSTRING([ReceivedDt], 1, 2) + "-" +
SUBSTRING([ReceivedDt], 3, 2) + "-" +
SUBSTRING([ReceivedDt], 5, 2))

问题原因:

您无法转换格式 YYMMDD 的字符串到有效的日期值。使用上面的表达式为值添加前缀 20 将值转换为格式 YYYYMMDD可以转换为日期。

说明上述表达式的 SSIS 2012 包:

使用 OLE DB 源、派生列转换和两个多播转换配置数据流任务。

Data Flow Task

使用以下具有 YYMMDD 格式的值的查询配置 OLE DB 源。
SELECT  '120304' AS ReceivedDt UNION
SELECT '120107' AS ReceivedDt UNION
SELECT '121211' AS ReceivedDt UNION
SELECT '121312' AS ReceivedDt;

配置派生列转换以将 ReceivedDt 列中的传入值转换为格式 YYMMDD to ReceivedDate 格式 YYYYMMDD .

Derived Column Transformation

在派生列转换和多播转换之间附加数据查看器。将错误输出配置为重定向行而不是失败组件。

执行包将在派生列转换和成功多播转换之间的数据查看器中显示可以转换为有效日期值的字符串值。

Success Multicast Transformation

执行包将显示无法在派生列转换和错误多播转换之间的数据查看器中转换为的字符串值。

Error Multicast Transformation

关于ssis - 如何使用派生列转换将字符串 (YYMMDD) 转换为日期时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10243505/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com