传递空字符串时,SQL Server OPENJSON返回1900-01-01的日期类型

时间:2019-02-07 18:44:13

标签: sql sql-server open-json

在SQL Server中使用OPENJSON解析JSON字符串时,如果日期字段为空,则SQL返回1900-01-01。

DECLARE @dt [date]
SELECT @dt=dt 
FROM OPENJSON('{"dt":""}')
WITH (dt [date] '$.dt')
PRINT @dt

输出:

1900-01-01

如何防止这种情况发生?我想到的一种方法是检查结果值,如果它是'1900-01-01',则将其重置为NULL。虽然我不希望实际的日期是1900-01-01,但是这对我来说并不正确。我在SQL语法中缺少什么吗?

1 个答案:

答案 0 :(得分:3)

好像返回的dt的值不是NULL,而是'',日期是1900-01-01。试试:

SELECT CONVERT(date,'');

您可以在NULLIF的值附近使用dt

SELECT @dt = NULLIF(dt,'')...