【问题标题】:SSIS Converting CSV to Text file changes Date formatSSIS将CSV转换为文本文件更改日期格式
【发布时间】:2016-06-29 19:06:34
【问题描述】:

我有一个 .CSV 文件,它正在从我的数据库中获取信息,并且有一堆格式如下的日期:6/1/2016 0:00

我不确定这是否重要,但对于平面文件目标输入,外部列将其作为“[DT_DBDATE]”的数据类型,而输入列将其显示为“DT_DBTIMESTAMP”

问题是,当我添加一个文件系统任务将此文件转换为 .TXT 文件时,它会将日期格式更改为:

2016-06-01 00:00:00

如何防止这种情况发生并保留 CSV 的原始格式?

【问题讨论】:

  • 除非您的最终目的地是美国人,否则 2016-06-01 00:00:00 格式更可取,因为它没有歧义
  • 在这种情况下是不可取的。
  • 只是为了澄清一些事情: 1. 使用日期数据类型存储在数据库中的日期没有格式。 2. 确保您在文本编辑器中查看您的 TXT 文件,而不是 Excel。在这两种情况下,都是“客户端工具”强加一种格式。请注意,您当前的输出格式非常接近 ISO 格式,这与我们将获得的标准日期格式一样接近。如果每个人都坚持使用 ISO 格式,我们可能会看到开发效率提高 50%,因为所有这些令人沮丧的日期问题都会消失。 TXT 文件是供人使用还是计算机使用?

标签: csv ssis


【解决方案1】:

添加一个 SSIS 派生列并使用以下表达式

RIGHT("0" + (DT_STR,2,1252)DATEPART("mm",COLUMNNAME),2) + "/" + RIGHT("0" + (DT_STR,2,1252)DATEPART("dd",COLUMNNAME),2) + "/" + (DT_STR,4,1252)DATEPART("yy",COLUMNNAME)

IMP:将 COLUMNNAME 替换为输入文件中的列名

现在您可以将此列映射到输出文件中的日期列。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-09
    相关资源
    最近更新 更多