如何将日期传递给存储过程?

时间:2018-09-05 07:30:09

标签: 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
        Return  1

END
ELSE
BEGIN
        Return 2
END

当我使用一些参数执行它时,它返回2(我在日期@Date = '2018-11-02'中使用了此参数),因此我决定尝试使用select语句,并且select语句返回一行,如果我将带有开始日期和结束日期的行添加到注释中,我的SP有效 所以我知道我的麻烦来自约会 但是我不明白为什么

PS:我已经尝试过两次之间,但结果相同

1 个答案:

答案 0 :(得分:0)

使用datetime列的日期部分比较日期:

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