为什么空字符串''
被渲染为'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
。