Datetime在存储过程中返回null

时间:2015-06-09 20:32:29

标签: c# sql sql-server

我正在另一个存储过程中执行存储过程。

我传递参数,当值不为null时,它完全正常,但是当值生成为0行时,它会给我错误。

存储过程:

    declare @LDate datetime
    declare @DateEntered datetime

    insert into Table1 values(5,5)

    EXEC @LDate = GetLDate @ID, @GID   // other stored procedure inside the main stored procedure
    // GetLDate is ("select Date1 from TableGetDate where @ID =4,@GID=5")

    if(CAST(@LDate as datetime) < CAST(@DateEntered as datetime))
        Select '-1'
    else
        SELECT '-2'

当我在C#代码中调用ExecuteScalar时,如果@LDate没有返回日期,则返回null。如果@LDate返回日期,则一切正常。

如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

如果对象值为null,则可以安全地将返回对象转换为日期时间。

DateTime dateTime = new DateTime();
try
{
 dateTime = Convert.ToDateTime(cmd.ExecuteScalar());
}
catch
{
 dateTime = new DateTime(1900, 1, 1);
}

答案 1 :(得分:0)

您不需要将日期时间作为日期时间。这没什么用。

declare @LDate datetime
declare @DateEntered datetime

EXEC @LDate = GetLDate @ID,@GID //Other store proc inside the main store proc

if (@LDate is null)
   SELECT '0' 
else if( @LDate < @DateEntered )
    SELECT '-1'
else
    SELECT '-2'