Моя база данных ERP использует ненулевые поля даты и времени. Тем не менее, он вводит «» для даты и времени, когда он недоступен, и возвращает «1900-01-01 00: 00: 00.000» в качестве значения.
Я хочу подавить даты 1900 года, удаляя дату только из поля Datetime. Для этого я создал следующий UDF:
CREATE FUNCTION ExtractDate(@DirtyDate DATETIME)
RETURNS VARCHAR(10) AS
BEGIN
DECLARE @CleanDate VARCHAR(10)
SELECT @CleanDate =
CASE
WHEN @DirtyDate = '' THEN ''
ELSE CONVERT(VARCHAR(10), @DirtyDate, 101)
END
RETURN @CleanDate
END
Это работает, но я хотел добавить обработку ошибок в случае, если пользователь использовал ее для чего-то, кроме поля datetime. После некоторого поиска в Google я обнаружил, что это невозможно с UDF.
Однако, если я напишу это как хранимую процедуру, смогу ли я вызвать ее в операторе выбора? Может ли кто-нибудь указать мне правильное направление?