为什么当日期字段为 NULL 时,SQL 查询返回 '01/01/1900' 而不是空字符串?



我正在测试一些返回值的SQL查询。

我从中选择的表中具有CloseDate字段中的值NULL。我有一个逻辑检查是否是NULL,返回一个空字符串。但是,它返回01/01/1900

declare @value varchar(50) = '2346677888'
    Set @Value=@Value +'%'
    select CONVERT(varchar,ISNULL(m.CloseDate,''),101) as CloseDate from( 
    SELECT m.EdsClosedDate AS CloseDate
    FROM [dbo].[tblMyTable] m                   
    WHERE MID like @value) m

查询有什么问题?

此表达式:

select CONVERT(varchar, ISNULL(m.CloseDate, ''), 101) as CloseDate

更清楚地写成:

select CONVERT(varchar(255), COALESCE(m.CloseDate, 0), 101) as CloseDate

也就是说,空字符串等效于日期值" 0"。SQL Server开始计数的日期为1900-01-01,这就是为什么您在结果中看到它的原因。

我不确定您的期望。如果要一个空字符串,请在将值转换为字符串之后分配

select COALESCE(CONVERT(varchar(255), m.CloseDate, 101), '') as CloseDate

最新更新