在数据库中为日期字段插入空值时,它将在1/1/1900 12:00:00 AM

时间:2015-12-16 13:34:26

标签: asp.net sql-server

我想在用户未提供日期输入时传递空值。我传递的是null,但是当它显示时显示为1/1/1900 12:00:00 AM

FollowUpDate字段为datetime数据类型

if (txtFollowupDate.Text !="")
{
    cmd.Parameters.AddWithValue("@FollowUpDate", FollowUpDate);    
}
else
{
    cmd.Parameters.AddWithValue("@FollowUpDate", "");
}

3 个答案:

答案 0 :(得分:3)

您应该使用空值而不是空字符串:

 if (txtFollowupDate.Text !="")
 {
     cmd.Parameters.AddWithValue("@FollowUpDate", FollowUpDate);
 }
 else
 {
     cmd.Parameters.AddWithValue("@FollowUpDate", DBNull.Value);
 }

答案 1 :(得分:1)

您没有传递null,而是传递空字符串,该字符串会转换为INSERT INTO sqitable(sqi_test) SELECT sqi_main FROM Middleman24 WHERE ISNUMERIC(sqi) = 1 AND sqi <> ''

您应该使用1/1/1900 12:00:00 AM代替。

修改

你确定你不是这样的意思吗?

DBNull.Value

我只是想知道if (txtFollowupDate.Text !="") { cmd.Parameters.AddWithValue("@FollowUpDate", txtFollowupDate.Text); } 变量的来源。

答案 2 :(得分:0)

在与数据库交互的情况下,您应该添加DBNull.Value而不是null。

您可以使用以下扩展方法来完成此操作。

public static void AddValueorDefaultToParams(this SqlCommand cmd, string paramName, string value)
 {
        if (!string.IsNullOrEmpty(paramName))
        {
            if (!string.IsNullOrEmpty(value))
            {
                cmd.Parameters.AddWithValue(paramName, value);
            }
            else
            {
               cmd.Parameters.AddWithValue(paramName, DBNull.Value);
            }
        }

}

用法

cmd.AddValueorDefaultToParams("@FollowUpDate", FollowUpDate);