0

我在 SQL Server 2016 中使用以下定义创建了一个表:

CREATE TABLE Stage.Test (f1 DATE NULL);

INSERT INTO Stage.Test (f1) VALUES ('1/1/2000');

请注意 f1 列使用 DATE 数据类型。

然后我在 SQL Server Data Tools (VS 2019) 中创建了一个数据流任务来从该表中加载数据。我创建了一个 OLEDB 源组件并将源表设置为 Stage.Test。但是当我检查“f1”列的数据类型(在“外部列”和“输出列”列中)时,它说它是一个 Unicode 字符串:

OLEDB 源组件图像

为什么选择 Unicode 字符串而不是 DT_DATE?

4

1 回答 1

0

当涉及到日期字段时,我还没有看到这个确切的示例,但是当 SSIS 检测到该字段属于某种类型时,它会自动转换数据。也许是您的日期字段中的“/”做到了。我们在世界这些地区不使用这种日期格式,所以我从来没有遇到过这个问题。当您使用 SSIS 导入 excel 文件时,您尤其可以看到这一点。我通常对字符串有这个问题,其中 unicode 字符串有时会变成非 unicode 字符串。

一种解决方法可能是:

  1. 编辑 sql 查询以将字段显式转换为日期
  2. 在源之后的数据流中添加一个转换步骤(如派生列以正确的顺序获取字符串的各个部分)
  3. 尝试通过右键单击数据流中的源并使用高级编辑器更改输出数据类型,然后编辑输出列数据类型: SSIS Source Advanced Editor Output

我不确定这 3 是否适用于这个日期格式问题,因为我自己没有使用这种格式的经验,但它对于我的 unicode/non-unicode 问题来说工作得很好。

于 2021-08-05T09:21:06.303 回答