Ниже приведена функция, из того, что я вижу, нет ошибок, но когда я пытаюсь ее построить, я получаю ошибку «Не удалось найти хранимую процедуру ISDATE»
На второй ноте, если в любом случае естьЛучшее решение моей проблемы, чем моя логика здесь, пожалуйста, дайте мне знать.
Требуется иметь базовый день и добавлять этот день каждый месяц для обозначения диапазона.Проблема возникает, если базовый день 29, 30 или 31 и февраль наступает, вы получите сообщение об ошибке SQL, в котором говорится, что это недопустимая дата.Цель этой функции состоит в том, чтобы взять три части даты и попытаться сделать верную дату для возврата.
CREATE FUNCTION Configuration.CreateDate
(
@Year INT,
@Month INT,
@Day INT
)
RETURNS DATE
AS
BEGIN
DECLARE @ReturnDate DATE
DECLARE @DateString varchar
DECLARE @VaildDate INT = 0;
WHILE @VaildDate = 0
BEGIN
SET @DateString = CAST(@Year AS VARCHAR(4)) + '-' +CAST(@Month AS VARCHAR(4)) + '-' + CAST(@Day AS VARCHAR(4))
IF ISDATE(@DateString) = 1
SET @ReturnDate = CAST(@DateString AS DATE)
SET @VaildDate = 1
ELSE
SET @Day = @Day - 1
END
RETURN @ReturnDate
END
GO