【发布时间】:2019-09-21 20:17:06
【问题描述】:
我遇到了一些问题,当我将一个空值传递给日期时间变量时,它存储为默认日期(1900-01-01 00:00:00.000)
我写了一个条件语句
declare @l_date datetime = '',@l_date1 datetime = getdate()
if @l_date <> ''
select 'Yes' as '@l_date',@l_date D
else
select 'No' as '@l_date',@l_date D
if @l_date1 <> ''
select 'Yes' as '@l_date1',@l_date1 D
else
select 'No' as '@l_date1',@l_date1 D
我预计两者都应该返回“是”。不幸的是,第一个条件返回“否”,第二个条件返回“是”。谁能解释一下这个功能是如何工作的。
【问题讨论】:
-
这可能是因为字符串自动转换为 INT 并且 SQL Server 为空字符串返回 0。您应该改用 NULL。
-
谢谢@dnoeth。
-
谢谢@Larnu
标签: sql sql-server tsql sql-server-2008-r2