我的ERP数据库使用不可为空的日期时间字段。但是,当一个不可用时,它会输入''作为日期时间,并返回'1900-01-01 00:00:00.000'作为值。
我想在仅从Datetime字段中剥离Date时禁止1900个日期。我创建了以下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
这有效,但我想添加错误处理,以防用户在日期时间字段以外的地方使用它。经过一些谷歌搜索后,我发现UDF无法做到这一点。
但是,如果我将其写为存储过程,我仍然可以在select语句中调用它吗?有人能指出我正确的方向吗?
答案 0 :(得分:2)
不,你不能在select语句中调用存储过程。
我赞赏你想要包含错误处理的野心,但最好的办法是在应用程序端检查 - 不要让人们在非日期字段上使用该功能。