在this question传统,在the documentation光,一个人如何使这个功能确定性:如何从varchar转换为datetime确定性?
ALTER FUNCTION [udf_DateTimeFromDataDtID]
(
@DATA_DT_ID int -- In form YYYYMMDD
)
RETURNS datetime
WITH SCHEMABINDING
AS
BEGIN
RETURN CONVERT(datetime, CONVERT(varchar, @DATA_DT_ID))
END
或者这一个(因为字符串/日期文字的 - 是的,我也试着“1900 -01-01' ):
ALTER FUNCTION udf_CappedDate
(
@DateTimeIn datetime
)
RETURNS datetime
WITH SCHEMABINDING
AS
BEGIN
IF @DateTimeIn < '1/1/1900'
RETURN '1/1/1900'
ELSE IF @DateTimeIn > '1/1/2100'
RETURN '1/1/2100'
RETURN @DateTimeIn
END
那么没有字面日期作为UDF字符串没有被CONVERTed? – 2008-11-21 20:55:27
如果字符串隐式转换为日期,那么这些转换缺乏“常量”风格,并且会使该函数不确定。 – 2008-11-21 21:08:16