【问题标题】:SSIS Adds Date to time field upon exporting to excelSSIS 在导出到 Excel 时将日期添加到时间字段
【发布时间】:2016-07-29 14:45:28
【问题描述】:

我正在尝试运行一个 SSIS 程序来获取一些日志记录数据并将其导出到 Excel 以供以后与 BI 工具一起使用。数据有 3 个时间字段,开始时间、结束时间和运行时间。从我的脚本组件中出来,它们似乎是正确的。当我使用 dataviewer 工具时,它看起来很完美

但是当我进入 Excel 时,我得到了这种格式。

On Run Time column

我不确定是什么原因造成的,也不知道如何解决。我唯一能注意到的是源高级编辑器中的一个属性将列数据类型设置为日期。

The Property

但每次我尝试将其更改为 DB_TIME 类型(与来自脚本的类型相同)时,它都会切换回日期数据类型。

有没有办法阻止添加此日期?它使 BI 工具的使用变得不可能。任何帮助将不胜感激。

【问题讨论】:

  • 在进行导出(通过查询)之前,您是否尝试过将结果转换为 nvarchar?通过这种方式,excel将信息视为具有您想要的格式的字符串
  • 我没有。你能解释一下这是怎么做到的吗?
  • 在您的查询中使用 CONVERT(NVARCHAR,starttime,103) 作为开始时间(例如 DD/MM/YYYYY),您可以找到有关格式here 的更多信息,通过这种方式导出数据以具有相同格式的字符串的形式表现出色。那么 Excel 将不会将字段识别为日期,而是将其识别为字符串
  • .NET 没有时间类型。更改目标类型不会将 System.DateTime 转换为 DB_TIME 或自动剪切日期值。您需要转换为 DT_DBTIME

标签: sql-server excel visual-studio ssis


【解决方案1】:

这对我来说似乎很奇怪,但请尝试将数据转换转换添加到您的包中。这应该强制使用您想要的任何类型的数据,无论是字符串还是时间。

【讨论】:

  • 我尝试了数据转换组件,但没有成功。但是,当我尝试转换为字符串时,它给了我一个“由于潜在的数据丢失而无法转换值”错误,所以我可能需要弄清楚这一点并尝试获取一个字符串。
  • 您尝试了哪些转换?您的脚本组件返回 DateTime 对象或字符串,.NET 还没有 Time 类型。您尝试投射到DT_DBTIME 吗?
  • 是的,我尝试将时间转换为日期时间,并且尝试仅从脚本组件中返回时间。作为具有 c# 时间跨度数据类型的 dbtime。都没有达到目标
  • 或 ssis 中的 DT_DBTIME
【解决方案2】:

你试过了吗

DT_WSTR(1252)

使用数据转换转换来转换时间?

【讨论】:

    【解决方案3】:

    我发现了问题。它与 Excel 连接管理器自动将该字段识别为日期时间字段有关,因此它以该格式导出。这种变化发生在最终组件和目标之间的连接中,因此转换没有像之后发生的那样工作。

    我只是将 xls 文件更改为 csv 文件并使用平面文件管理器,就成功了!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-09-21
      • 1970-01-01
      • 2018-02-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多