SSIS 中的 DT_DATE 和 DT_DBTIMESTAMP 数据类型有啥区别?
Posted
技术标签:
【中文标题】SSIS 中的 DT_DATE 和 DT_DBTIMESTAMP 数据类型有啥区别?【英文标题】:What is the difference between DT_DATE and DT_DBTIMESTAMP data types in SSIS?SSIS 中的 DT_DATE 和 DT_DBTIMESTAMP 数据类型有什么区别? 【发布时间】:2021-12-28 08:43:55 【问题描述】:DT_DATE
和 DT_DBTIMESTAMP
都存储年、月、日、小时、分钟、秒和小数秒。
DT_DATE
、DT_DBTIMESTAMP
有什么区别?
其中哪一个用于存储 SQL 数据库中的 DateTime 值?
【问题讨论】:
【参考方案1】:根据微软:
A date structure that consists of year, month, day, hour, minute, seconds, and fractional seconds. The fractional seconds have a fixed scale of 7 digits.
DT_DATE 数据类型是使用 8 字节浮点数实现的。天数以整数增量表示,从 1899 年 12 月 30 日开始,午夜作为时间零。小时值表示为数字小数部分的绝对值。然而,一个浮点值不能代表所有的实数值;因此,可以在 DT_DATE 中显示的日期范围是有限制的。
另一方面,DT_DBTIMESTAMP 由内部具有年、月、日、小时、分钟、秒和毫秒的单独字段的结构表示。这种数据类型对它可以显示的日期范围有更大的限制。
https://docs.microsoft.com/en-us/sql/integration-services/data-flow/integration-services-data-types?view=sql-server-ver15
【讨论】:
那么使用哪一个来存储sql数据库中的datatime值 @variable,它取决于它在数据库中的类型。我想这个“sql 数据库”是 SQL Server,所以您可能需要在此处将 ssis 日期时间与 db 日期时间类型进行比较:docs.microsoft.com/en-us/sql/t-sql/data-types/… 并根据更好地适应数据库中类型的类型来决定 SSIS 类型跨度> 【参考方案2】:DT_DATE
这两种数据类型的主要区别在于DT_DATE
用于将Excel 中使用的Ole 日期作为浮点数处理。您可以使用如下 SSIS 表达式从 DT_DATE
列中简单地检索此数字:
(DT_R8)[dateColumn]
甚至您可以使用以下表达式将浮动列转换为日期:
(DT_DATE)[OleDateColumn]
您可以阅读以下答案的更多信息:Is there a better way to parse [Integer].[Integer] style dates in SSIS?
DT_DBTIMESTAMP
此外,DT_DBTIMESTAMP
和 DT_DBDATE
是用于存储日期的 SSIS 数据类型,其存储方式与它们在 SQL 数据库中的存储方式相同,这从添加到数据类型名称中的 DB
字符非常清楚。
SSIS | SQL Server |
---|---|
DT_DBDATE | Date |
DT_DBTIMESTAMP | DateTime |
有用的资源
Mapping of Integration Services Data Types to Database Data Types【讨论】:
这两个似乎相似 - DT_DBTIMESTAMP 和 DT_DBDATE?他们持有年月日小时分钟秒分数Dt_dbdate
不存储时间部分,而 DT_DBTIMESTAMP
存储时间部分。使用Dt_dbdate
,时间部分全部设置为零。
@variable 这在以下答案中进行了解释:***.com/questions/57221410/…
@variable 您还需要什么澄清吗?以上是关于SSIS 中的 DT_DATE 和 DT_DBTIMESTAMP 数据类型有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章
SSIS输出日期为DD / MM / YYYY 00:00:00
SSIS 中的 Merge Join 和 Lookup 转换有啥区别?