Я пойду в другом направлении, как и два других ответа.
Полагаю, у вас есть приложение с выпадающими списками или текстовыми полями.Ваше приложение вызывает ваш API, а затем вы отправляете эти значения в хранимую процедуру.Иногда приложение отправляет пустую строку, и когда вы отправляете их в хранимую процедуру, они преобразуются в 1900-01-01
.
Так что если у вас есть следующая хранимая процедура:
CREATE PROCEDURE dbo.InsertDate
@DATEVAL1 DATETIME, @DATEVAL1 DATETIME
AS
INSERT INTO TABLE (mDate1, mDate2)
VALUES (@DATEVAL1, @DATEVAL2);
GO
В этом случае, еслиотправив ''
в хранимую процедуру, вы получите 1900-01-01
в момент создания параметров, поскольку происходит неявное преобразование, поэтому NULLIF()
здесь не будет работать.
Вы можете добавить некоторую логику IF ()
к хранимой процедуре, чтобы преобразовать любой 1900-01-01
в NULL
перед запуском INSERT
Или вы можете добавить логику в преобразование API.любой от ''
до NULL
перед вызовом хранимой процедуры.