gpt4 book ai didi

sql - 如何使用 SSIS 派生列转换为 NULL 日期分配默认值?

转载 作者:行者123 更新时间:2023-12-04 20:35:18 26 4
gpt4 key购买 nike

在我的 SQL 2008 SSIS 环境中,我有来自 CSV 文件的数据,我需要修正空日期。

来自 CSV 的数据如下所示:

01011990
01011990
01011990
01011990
01011990

在我的临时表中,我有一列定义为:
[SHIPPED DATE] date NOT NULL

首先,我通过将列推送到具有以下功能的派生转换来修复日期值:

(DT_DBDATE)(SUBSTRING([SHIPPED DATE],1,2) + "/" + SUBSTRING([SHIPPED DATE],3,2) + "/" + SUBSTRING([SHIPPED DATE],5,4))



上述转换使我的字符串日期从 CSV 导入到我的 SQL 数据库中的日期列中。

这个的输出是:
1990-01-01
1990-01-01
1990-01-01
1990-01-01
1990-01-01

Next ,我想处理 NULL 日期,以便我可以忠实于我的数据库中的“NOT NULL”定义。我想要做的是为 NULL 日期分配一个默认值,但我收到一条错误消息,如下所示:

Error at CSV to SQL [Derived Column [24817]]: The data types "DT_WSTR" and "DT_DBDATE" are incompatible for the conditional operator. The operand types cannot be implicitly cast into compatible types for the conditional operation. To perform this operation, one or both operands need to be explicitly cast with a cast operator.



我的 CSV 列是 WSTR,我在 SQL DB 中的目标是“日期”列。

我尝试使用的转换是:
ISNULL([SHIPPED_DATE]) ? “1900-01-01”:[SHIPPED_DATE]

由于上述消息,它不想工作。谁能指出我正确的方向?

最佳答案

更改您的表达式,如下所示。三元运算符有两个部分。

Part 2 你把它作为 [SHIPPED_DATE] ,它是 DT_DBDATE 类型,因为你已经在派生列转换中转换了这个值。

然而, Part 1 被简单地分配为文本 "1900-01-01" 。您需要在该字符串值之前添加 ( DT_DBDATE ) 以将其类型转换为日期格式,以便三元运算符上指定的两个值具有相同的数据类型。


 ISNULL([SHIPPED_DATE]) ? "1900-01-01" : [SHIPPED_DATE]


 ISNULL([SHIPPED_DATE]) ? (DT_DBDATE)"1900-01-01" : [SHIPPED_DATE]

关于sql - 如何使用 SSIS 派生列转换为 NULL 日期分配默认值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13166968/

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