Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将ssis中的数字数据类型转换为日期数据类型_Ssis_Ssis 2012 - Fatal编程技术网

如何将ssis中的数字数据类型转换为日期数据类型

如何将ssis中的数字数据类型转换为日期数据类型,ssis,ssis-2012,Ssis,Ssis 2012,您好,我有csv文件数据,例如:-(ActiveDate=20180105),因此我想将此列保存到我的数据库中。在我的数据库列中,数据类型为datetime 当使用数据转换作为DT_Date时,我得到一个错误:- 转换返回状态值2和状态文本“值” 无法转换,因为可能会丢失数据 那么,我如何将这个ActiveDate数据从我的excel导入我的数据库,作为datetime 您能帮我解决一下吗?您必须首先在数据转换元素中将列YYYYMMDD转换为字符串,如下所示: Input Column

您好,我有csv文件数据,例如:-(ActiveDate=20180105),因此我想将此列保存到我的数据库中。在我的数据库列中,数据类型为datetime

当使用数据转换作为DT_Date时,我得到一个错误:-

转换返回状态值2和状态文本“值” 无法转换,因为可能会丢失数据

那么,我如何将这个ActiveDate数据从我的excel导入我的数据库,作为datetime


您能帮我解决一下吗?

您必须首先在
数据转换
元素中将列
YYYYMMDD
转换为字符串,如下所示:

  Input Column   Output Column   Data Type                      Length 
  IntDate       StringDate      Unicode string [DT_WSTR]        50  
然后您可以在
派生列
元素中使用此公式将新字符串列转换为实际日期:

(DT_DATE)(SUBSTRING(StringDate,1,4) + "-" + SUBSTRING(StringDate,5,2) + "-" + SUBSTRING(StringDate,7,2))
对于日期列中为空的数据,请使用此公式,此公式将在当前日期中更改为空:

isnull(StringDate)? GETDATE() : (DT_DATE)(SUBSTRING(StringDate,1,4) + "-" + SUBSTRING(StringDate,5,2) + "-" + SUBSTRING(StringDate,7,2))
结果:

IntDate     StringDate  DateDate
20170809    20170809    2017-08-09 00:00:00.0000000

嗨,贾斯汀。我是SSIS新手。在使用数据转换为Unicode字符串后,您能告诉我吗。如何在SSIS的派生列中使用公式。?如何实现仅日期(例如:-2017/08/09)在派生列中使用这种格式。?我不需要时间1.对于在Google中搜索派生列示例,您只需粘贴代码并将StringDate更改为您的列。2.如果您写入数据库,则插入哪种类型的日期无关紧要。嘿,我已经完成了该派生列..但仍然出现以下错误:-
[Derivated column[48]]错误:SSIS错误代码DTS_E_InjectedTransferormFailureOnError。“派生列”失败,因为发生了错误代码0xC0049064,并且“派生列.输出[派生列输出]。列[派生列接纳日期]上的错误行处置失败“指定出错时失败。指定组件的指定对象上发生错误。在此之前可能会发布错误消息,其中包含有关失败的详细信息。
我编辑了我的答案,如果在日期列中为空,请使用第二个公式。此公式将在当前日期更改为空。您是否尝试了@Justin的建议?您当前遇到的错误是什么?是,我遇到了此错误:-
[派生列[36]]错误:尝试执行类型转换时出错。[派生列[48]]错误:SSIS错误代码DTS_E_inducedTransfersFailureOnError。“派生列”失败,因为发生错误代码0xC0049064,“派生列.输出[派生列输出].列[派生列日期]”上的错误行处理指定错误时失败。指定组件的指定对象上发生错误。在此之前可能会发布错误消息,其中包含有关故障的更多信息。
在执行
派生列中的
转换之前
是否使用
数据转换将输入的
数字
转换为
字符串
?@Abhishek:-是的,我这样做了,您的输入中一定有错误实现时,您可能遗漏了一些东西,因为所描述的方法工作得非常好。