В моей базе данных 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
Это работает, но я хотел добавить обработку ошибок на случай, если пользователь использовал ее для чего-то другого, кроме поля даты и времени. После некоторого поиска в Google я узнал, что это невозможно с UDF.
Однако, если я напишу это как хранимую процедуру, смогу ли я вызвать ее в операторе select? Может ли кто-нибудь указать мне в правильном направлении?