我在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
谁能告诉我为什么他们认为这可能会发生?谢谢
将日期列映射到平面文件时,即使它没有出现在数据查看器或ssms中,它也会包含时间。
不要在源代码中使用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格式,日期都采用ISO格式的YYYY-MM-DD。
使用以下SQL命令:
select convert(varchar(10), dateadd(S, [start], '1970-01-01'),120)