为什么SSMS和SSIS会产生两个不同的" null date"值?

时间:2018-01-24 19:08:51

标签: sql-server tsql ssis

多年来,我一直使用SSIS(SQL Server Integration Services)将flatfile数据导入SQL Server表。如果将仅时间字符串字段强制转换为日期时间字段,我通常会看到如下转换:

"13:45" to "1899-12-30 13:45:00.000"

我偶然发现,如果我在使用SSMS(SQL Server Management Studio)的T-SQL查询中执行此操作,则会发生这种情况:

select cast('13:45' as datetime)` produces "1900-01-01 13:45:00.000"

我很好奇为什么会出现两个不同的日期值。如果它是所有SQL Server,则不应该是相同的" null日期值"是一样的吗?

1 个答案:

答案 0 :(得分:0)

您将苹果与橙子进行比较。在一个方面,您可能正在使用OleDb连接到数据源,而在另一个中运行本机查询。

在OleDb的documentation中,您会看到根据设置,它会将时间转换为当前日期或日期为1899-12-30的DateTime。

SQL Server documentation解释了它如何简单地放置1900-01-01'在从时间数据转换时在前面。