Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 如何将日期传递给存储过程?_Sql Server_Tsql_Between - Fatal编程技术网

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

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

我有以下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@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