SQL Server OPENJSON возвращает 1900-01-01 для типа даты при передаче пустой строки - PullRequest
0 голосов
/ 07 февраля 2019

При разборе строки JSON с использованием OPENJSON в SQL Server, если поле даты пустое, SQL возвращает 1900-01-01.

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

Вывод:

1900-01-01

Как я могупредотвратить это?Один из способов, о котором я могу подумать, это проверить полученное значение и сбросить его на NULL, если оно равно «1900-01-01».Хотя я не ожидаю, что фактическая дата когда-либо будет 1900-01-01, но мне это не кажется правильным.Я что-то упустил в синтаксисе SQL?

1 Ответ

0 голосов
/ 07 февраля 2019

Похоже, что возвращаемое значение dt это не NULL, а '', что в качестве даты 1900-01-01.Попробуйте:

SELECT CONVERT(date,'');

Вы можете использовать NULLIF около значения dt:

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