我正在读取 VB.net 脚本源组件中的文件列表以创建文件名列表和文件列表的 LastWriteDate
。 LastWriteDate
在脚本源中作为 DateTime 保存并输出到存储在目标 Recordset 中的 DT_DBTIMESTAMP
。
我在源和目标之间的数据流上放置了一个查看器,它显示 DT_DBTIMESTAMP
第一个值是 2018-01-15 15:55:05.765
文件。
然后在控制流中,我对记录集执行 ForEach 循环。
在其中我有一个映射到 DT_TIMESTAMP
的 DateTime 类型的变量。
在 ForEach 中,我有一个脚本组件,它将 DT_TIMESTAMP
映射到组件中。
该组件将 DT_TIMESTAMP
检索到 DateTime 变量中,但将其存储为
1/15/2018 下午 3:55:06
。
不仅格式改变了,精度也改变了。
我对这里发生的事情有点困惑,但我假设 DT_TIMESTAMP
中的完整日期和时间在我的第二个脚本中仍然可用,但我不清楚如何获取它。
有没有办法在我的脚本中设置 DateTime 变量以显示与 DT_TIMESTAMP
相同的精度?也许我需要将接收脚本变量定义为 DateTime 以外的其他变量,即 DT_TIMESTAMP
等价物?
有没有一种方法可以防止脚本组件中的 DateTime 变量舍入 DT_TIMESTAMP
的值,以便将其转换为 1/15/2018 3:55:05 PM
?
最佳答案
最准确的方法是将 2018-01-15 15:55:05.765
导入到 varchar 变量中。然后,如果您需要在包含变量的包中进行日期/时间计算,将其转换为 DT_DBTIMESTAMP2,它将保留 2018-01-15 15:55:05.765
的精确值。如果您需要将该值插入到 SQLServer 中,请将其作为 DATETIME
类型插入,您将获得 2018-01-15 15:55:05.767
的值。这是由于日期时间数据类型的限制。
来自 Microsoft : 日期时间值四舍五入为 .000、.003 或 .007 秒的增量
关于sql - SSIS 2008 脚本组件 DT_TIMESTAMP 到日期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48305609/