asp.net - 将参数中的NULL传递给存储过程中的DateTime字段




sql vb.net (3)

我有一个存储过程,使用我提供的参数来更新数据库,但是我无法将NULL传递给存储过程

我需要使NULL的字段是DateTime字段

DB.Parameters.AddWithValue("@date", NULL)

这给了我错误

没有声明“NULL”。 “空”常数不再被支持; 改用“System.DBNull”

所以我试了

DB.Parameters.AddWithValue("@date", DBNull.Value.ToString())

但这会在列中传递一个""字段时,在列中产生值1900-01-01 00:00:00.000

我也试过了

DB.Parameters.AddWithValue("@date", DBNull.Value)

但它会产生这个错误

类型“System.DBNull”的值不能转换为“String”。

有没有人有任何想法?


像这样尝试使用Add而不是AddWithValue

DB.Parameters.Add("@date", SqlDbType.DateTime).Value = DBNull.Value;

尝试这个

如果你正在使用类和它的属性,这些属性值被用作参数,那么你可以做到这一点

将财产的签名给予

public DateTime? myDateTime = null;// Here ? is used to make the property nullable.

另外,如果您的日期列的类型为varchar,则将其更正为Date(Sql2008)/ DateTime(2005)。

//改变参数

@SomeDate datetime = null (as suggested by chris)

允许该字段接受null,然后将值作为

DB.Parameters.Add("@date", DBNull.Value)

这是一个例子。 这对我有用

if(obj.myDate == DateTime.MinValue)
{
    aCommand.Parameters.Add("dateParameter", SqlDbType.Date).Value = DBNull.Value;
}
else
{
    aCommand.Parameters.Add("dateParameter", SqlDbType.Date).Value = obj.myDate ;
}




null