【问题标题】:SSIS Package Date formatSSIS 包日期格式
【发布时间】:2019-03-01 14:39:20
【问题描述】:

我在 Azure 中有一个数据工厂,它有一个执行 SSIS 包的管道。此包中包含一个提取脚本,它将日期值从2019-01-13 00:00:00 转换为2019-01-13。在此之后,逻辑应用会提取 extract.txt 文件并将其发送到 sftp 以放入文件夹中。

从我在 SSMS 中将 varchar 数据类型转换为日期(我在 Unix 中接收日期)中的提取脚本中可以看到,对于到达日期,给出了以下值。

脚本

数据查看器

但是,当我打开我的 extract.txt 文件时,日期显示为:2019-01-13 00:00:00.0000000

谁能告诉我为什么他们认为会发生这种情况?谢谢

【问题讨论】:

    标签: sql-server azure datetime ssis flat-file


    【解决方案1】:

    当您将日期列映射到平面文件时,即使它没有出现在数据查看器或 ssms 中,它也会包含时间。

    SSIS 解决方案

    不要在源中使用dateadd(),而是让列保持原样,在 SSIS 中使用具有以下表达式的派生列:

    LEFT((DT_WSTR,50)DATEADD("s", [start], (DT_DATE)"1970-01-01",10)
    

    输出

    2019-01-13

    基于Cast (SSIS Expression) official documentation

    当字符串转换为 DT_DATE 时,或反之亦然,使用转换的语言环境。但是,无论区域设置首选项是否使用 ISO 格式,日期都是 YYYY-MM-DD 的 ISO 格式。

    SQL Server 解决方案

    使用以下 SQL 命令:

    select convert(varchar(10), dateadd(S, [start], '1970-01-01'),120)
    

    【讨论】:

    • 嗨,很抱歉现在才回到这个问题,但我已经不在办公室了。这工作正常,我尝试了 SQL Server 解决方案,它为我提供了我正在寻找的日期的格式。非常感谢!