【发布时间】:2010-01-23 22:47:14
【问题描述】:
我的 ERP 数据库使用不可为空的日期时间字段。但是,当日期时间不可用时,它会输入 '' 并返回 '1900-01-01 00: 00: 00.000' 作为值。
我想抑制 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 语句中调用它吗?有人可以指出我正确的方向吗?
【问题讨论】:
标签: tsql sql-server-2000