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



在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 语法中缺少某些内容吗?

看起来返回的dt的值不是NULL而是'',作为日期是1900-01-01。尝试:

SELECT CONVERT(date,'');

您可以在dt的值周围使用NULLIF

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

最新更新