在sql server中使用日期计算列

时间:2016-05-10 16:53:10

标签: sql sql-server

当我尝试在计算列中使用用户定义的函数时出现错误。计算列中的表达式如下所示:

(dbo.ufGetWaiterIDByTableID([DiningTable ID], [OrderDate]))

但是,当我将此表达式更改为以下

(dbo.ufGetWaiterIDByTableID([DiningTable ID], '2016-05-10 21:30:15'))

它很好,没有错误信息。 我的函数的第二个参数是datetime2类型,[OrderDate]列也是datetime2(7)类型。 我无法解决问题所在。

错误是

Error validating formula

函数的定义是

ALTER FUNCTION [dbo].[ufGetWaiterIDByTableID]
(
    -- Add the parameters for the function here
    @tableID int, @adate datetime2(7)
)
RETURNS int
AS
BEGIN
-- Declare the return variable here
DECLARE @waiterID int

-- Add the T-SQL statements to compute the return value here
SELECT  @waiterID=tw.[Waiter ID]
FROM TableWaiter tw
WHERE tw.[DiningTable ID]=@tableID  AND DATEDIFF(d,tw.AssignDate, @adate)=
(Select min(DATEDIFF(d, AssignDate, @adate)) 
FROM TableWaiter 
WHERE [DiningTable ID]=@tableID AND DATEDIFF(d, AssignDate, @adate)>=0)

-- Return the result of the function
RETURN @waiterID

0 个答案:

没有答案