SSIS包日期格式

时间:2019-03-01 14:39:20

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

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

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

脚本

Script

数据查看器

Date Value

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

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

1 个答案:

答案 0 :(得分: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)