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
Sql server SSIS到SQL日期时间数据类型转换失败_Sql Server_Ssis - Fatal编程技术网

Sql server SSIS到SQL日期时间数据类型转换失败

Sql server SSIS到SQL日期时间数据类型转换失败,sql-server,ssis,Sql Server,Ssis,我是MS SQL server 2014的初学者。需要一些从SSI到SQL server的数据类型转换建议 我正在处理日期-时间字段,一个示例值:“01272016122044123”,格式为“mmddyyyhhmmssss” 在SSIS中,我使用了数据类型“具有精度的数据库时间戳[DT_dbtimestamp 2]”,在SQL Server中,我使用了数据类型“DateTime2(7)” 当我尝试从SSIS导入数据时,会出现错误“OLE DB记录可用。来源:“Microsoft SQL Ser

我是MS SQL server 2014的初学者。需要一些从SSI到SQL server的数据类型转换建议

我正在处理日期-时间字段,一个示例值:“01272016122044123”,格式为“mmddyyyhhmmssss”

在SSIS中,我使用了数据类型“具有精度的数据库时间戳[DT_dbtimestamp 2]”,在SQL Server中,我使用了数据类型“DateTime2(7)”

当我尝试从SSIS导入数据时,会出现错误“OLE DB记录可用。来源:“Microsoft SQL Server本机客户端11.0”Hresult:0x80004005说明:“无效的日期格式”

返回的列状态为:“转换失败,因为数据值溢出了指定的类型。”

需要知道我到底哪里出错了吗

谢谢
Syed Ayaz Mahmud

SSIS对将字符串转换为datetime非常挑剔。我会在数据流中执行脚本任务:

  • 从数据库中选择值作为字符串
  • 添加脚本组件转换
  • 在输出缓冲区中创建一列,即“数据库时间戳精度[DT_dbtimestamp 2]”,确保将刻度调整为3
  • 在脚本中使用以下命令:

    using System.Globalization;
    
    public override void Input0_ProcessInputRow(Input0Buffer Row)
    {
        CultureInfo provider = CultureInfo.InvariantCulture;
        Row.newDate = DateTime.ParseExact(Row.MyDate, "MMddyyyyhhmmssfff", provider);
    }
    

  • 最后三位是什么?最后三位是毫秒数日期的格式现在我认为SQL认为它是一个整数,没有适合这个数字的日期格式。如果你把它放进excel并选择一种日期格式,我想它也不会起作用。查看此网站会有所帮助。你可能需要让SQL有点创意,以正确的方式格式化数字。嗨,帕尔默,你是对的,即使我把它放在excel工作表中,并将其格式化为日期/时间(尝试了各种方法),但都不起作用。后来,我尝试将其设为INT,然后导入SQL(效果很好)。问题是现在我必须使用子字符串来重新装饰数字。如果您有其他选择,请告诉我。谢谢。如果您可以在插入后使用它,只需在…之前使用它,并插入正确的日期时间格式:`YYYY-MM-DD hh:MM:ss[.nnn]`。