Sql server 如何将日期传递给存储过程?
我有以下SP:Sql server 如何将日期传递给存储过程?,sql-server,tsql,between,Sql Server,Tsql,Between,我有以下SP: IF EXISTS (SELECT * FROM [dbo].[Assignments] WHERE ProjectId=@ProjectUID AND TaskId=@TaskUID AND ResourceId=@ResourceUID AND (StartDate <= @DATE AND FinishDate >= @DATE) ) BEGIN Retu
IF EXISTS (SELECT * FROM [dbo].[Assignments]
WHERE ProjectId=@ProjectUID AND TaskId=@TaskUID AND ResourceId=@ResourceUID
AND (StartDate <= @DATE AND FinishDate >= @DATE)
)
BEGIN
Return 1
END
ELSE
BEGIN
Return 2
END
当我使用一些参数执行它时,它会返回我2我已经将这个参数用于我的date@date='2018-11-02',所以我决定尝试使用select语句,select语句会返回我一行,如果我将带有开始和结束日期的行放在注释中,我的SP会工作
所以我知道我的麻烦来自约会
但我不明白为什么
PS:我已经尝试过使用between,但结果相同使用datetime列的日期部分比较日期:
您使用的是哪种数据库管理系统?该代码是特定于产品的。您能从表中提供一些示例数据吗?期望的结果是将开始日期和结束日期转换为日期。若@date参数是字符串,那个么也需要转换成date。这很奇怪,我用between做了一个转换,但它不起作用,我添加了比较符号,现在它起作用了。谢谢
IF EXISTS (
SELECT *
FROM [dbo].[Assignments]
WHERE
ProjectId = @ProjectUID AND
TaskId = @TaskUID AND
ResourceId = @ResourceUID AND
(CONVERT(date, StartDate) <= @DATE AND CONVERT(date, FinishDate) >= @DATE)
)
BEGIN
Return 1
END
ELSE
BEGIN
Return 2
END