为什么在日期列中插入空字符串会产生1900-01-01



为什么空字符串''被渲染为'1900-01-01',而NULL的值被保留为NULL

create table "dbo"."day" (day date)
insert into "dbo"."day" (day) values (NULL), ('')
select day from "dbo"."day"
day
NULL
1900-01-01

这是一个更简化的例子,它也返回1900-01-01:

SELECT CAST('' as date)

NULL日期为NULL(未知值(。另一方面,空字符串的计算结果为0,在SQL Server中,它隐含地是一个整数,表示自1900-01-01以来的天数。你可以参考这篇文章
因此,当我们尝试将''插入日期类型列时,等于插入1900-01-01

最新更新