sql-server - DT_DBTIMESTAMP2 只有 3 位数字
问题描述
我(DT_DBTIMESTAMP2,7)GETDATE()
在 SSIS 派生列转换和带有 datetime2(7) 的表列中。即使我在两者中都设置了 7 位数秒刻度,但似乎它只有 3 位数。例如,我预计像“2018-05-02 16:45:15.6192346”,但它是“2018-05-02 16:45:15.6190000 ”。
我需要毫秒的原因,我想使用时间戳从任何重复中整理出最新记录。我意识到只有 3 位数的秒刻度是不够的。
除了派生列转换和表列之外,SSIS 包中是否有任何必需的设置?任何建议将不胜感激。
解决方案
尽管这与 HoneyBadger 所说的几乎相同,但我正在扩展一点,因为 OP 没有使用GETDATE()
SQL Server 中的表达式。2018-05-02 16:45:15.619
(Transact-SQL)永远无法返回该值,GETDATE()
因为它只能精确到 1/300 秒(因此最后一个数字只能是 0、3 和 7(技术上是 0、333333333~ 和 666666666~,即为什么最后一个数字是 7,因为它是四舍五入的))。
在 SSIS 中,GETDATE()
表达式返回的数据类型为DB_TIMESTAMP
. 根据文档:
由年、月、日、小时、分钟、秒和小数秒组成的时间戳结构。小数秒的最大刻度为 3 位数。
因此,最后 4 个字符丢失。不幸的是,我不相信 SSIS 中有一个函数可以将当前日期和时间返回到您需要的精度。因此,如果您需要这种高级别的,您可能需要使用 SQL Server 中的表达式,例如SYSDATETIME()
HoneyBadger 推荐的。
推荐阅读
- python - 键入时: print(Topic.objects.all()) ,我收到错误消息: django.db.utils.OperationalError: no such table:
- javascript - Vue动态组件,如何处理不同的emit和pass props并替换不同的slot?
- c# - 打开目录c#中的所有.exe文件
- tensorflow - AttributeError:模块“tensorflow”没有属性“contrib”
- python - 如何通过 Django ORM 获得另一个模型的最高评价?
- airflow - 气流网络服务器没有响应(一些工人似乎已经死亡,gunicorn 没有按预期重新启动它们)
- javascript - Next.js - `npm run build` 失败
- html - 谁能解释如何将数据库值链接到 div
- groovy - Groovy 中的日期转换
- javascript - Math.random() 放入函数时生成相同的数字