完整消息
Parameter: [DbName].[SpName].@timeout contains an unresolved reference to an object. Either the object does not exist or the reference is ambiguous because it could refer to any of the following objects: [dbo].[TIME]
我知道,此消息已经存在几个问题。但是在我的示例中,发生这种情况尤其是由于TIME Sql类型。
我有如下所示的StoredProcedure(在Visual Studio Sql数据库项目中)。
CREATE PROCEDURE [dbo].[my_sp]
@name VARCHAR(255),
@timeout TIME
AS
...
我没有任何名称为 TIME 的表。当我与其他类型更改TIME类型时,它可以正常工作,以其他方式以TIME类型显示此消息并编译时间错误。
TIME我试图用作C#的TimeSpan的SQL替代方法。
答案 0 :(得分:2)
您不能在SQL Server 2005中使用time
,因为它直到SQL Server 2008才存在。
相反,请考虑存储时间间隔的数字表示形式(最终,time
仍然是 -只是:您会明确地而不是自动地进行操作)。典型示例是将时间间隔表示的秒数或毫秒数存储为int
。
方便地,TimeSpan
具有映射到此的TotalSeconds
和TotalMilliseconds
属性(只是:将其转换为整数),并具有FromSeconds(...)
和{{1} }用于其他方向的方法。
从评论中看来,您还需要一些功能来组合(添加)时间到日期;这也很容易:
FromMilliseconds(...)
或
DATEADD(second, {interval as seconds}, {some datetime})