关于c#4.0:如何在asp.net中将null值传递给datetime数据类型?

How to pass the null value to datetime datatype in asp.net?

如何将空值传递给ASP.NET中的日期时间数据类型?

1
2
3
4
5
6
7
8
9
10
cmdInsertUpdateConsultantDetails.Parameters.Add("@DateofExpiry", SqlDbType.DateTime);
if (txtdateofexpiry.Text.Trim() =="")
{
    cmdInsertUpdateConsultantDetails.Parameters["@DateofExpiry"].Value =
}
else
{
    cmdInsertUpdateConsultantDetails.Parameters["@DateofExpiry"].Value =
        Convert.ToDateTime(txtdateofexpiry.Text.Trim());
}


日期时间不是可以为空的类型。如果不提供值,它等于datetime.minvalue

你可以使用

1
DateTime? MyNullableDateTime;

如果你感兴趣,这个问题在答案中有更详细的内容。


简单地说,你可以给DBNull.Value传递NULL值。

1
2
3
4
if (txtdateofexpiry.Text.Trim() =="")
{
    cmdInsertUpdateConsultantDetails.Parameters["@DateofExpiry"].Value = DbNull.Value
}

还建议使用DateTime?或nullable。


日期时间是值类型,不能为空。您可以使用Nullable(或语法缩写DateTime?)来代替它。

下面是一个例子:

1
2
DateTime? dateTime;
DateTime.TryParseExact(txtdateofexpiry.Text.Trim(),"dd/MM/yyyy", null, DateTimeStyles.None, out dateTime);


你可以把它当作DBNull.Value传递。所以它会是

1
2
3
4
5
6
7
8
9
10
cmdInsertUpdateConsultantDetails.Parameters.Add("@DateofExpiry", SqlDbType.DateTime);
if (txtdateofexpiry.Text.Trim() =="")
{
    cmdInsertUpdateConsultantDetails.Parameters["@DateofExpiry"].Value = DBNull.Value;
}
else
{
    cmdInsertUpdateConsultantDetails.Parameters["@DateofExpiry"].Value =
          Convert.ToDateTime(txtdateofexpiry.Text.Trim());
}