在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