sql - SSIS 2008 脚本组件 DT_TIMESTAMP 到日期时间

标签 sql sql-server datetime ssis etl

我正在读取 VB.net 脚本源组件中的文件列表以创建文件名列表和文件列表的 LastWriteDateLastWriteDate 在脚本源中作为 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/

相关文章:

sql - Oracle like 和 between 一起使用

sql - MSMQ v 数据库表

sql - SQL Server数据库中的身份增量正在跳跃

sql-server - 如何通过SQL Powershell在所有存储过程中搜索字符串?

sql-server - 在数据库中存储密码的首选方法

sql - 从两个表中选择以查找基于生效日期的增值税税率

sql - 在 sql server 存储过程中创建和循环列表

PHP : calculate day difference between stored datetime in mysql and current datetime for token expiry

.NET DateTime 没有预定义的大小

javascript - 检查Javascript中的时差