将nvarchar数据类型转换为日期时间数据类型会导致超出范围的值?

时间:2014-04-11 11:35:50

标签: c# asp.net sql datetime

我试图通过文本框在我的数据库表中插入日期。但即使我将字符串转换为Datetime,我仍然会收到此错误:

  

“将nvarchar数据类型转换为日期时间数据类型会导致超出范围的值”。

我在我的数据库中使用了datetime数据类型。这是我的代码:

try
{
    SqlCommand cmd = new SqlCommand(@"INSERT INTO tblProject(project_starting_date,project_ending_date)values(@projectstartingdate,@projectendendingdate)", objconn);
    //cmd.Parameters.AddWithValue("@projectstartingdate", DateTime.Parse(txtStartingdate.Text).ToString());
    //cmd.Parameters.AddWithValue("@projectendendingdate", DateTime.Parse(txtProjectendingdate.Text).ToString());
    DateTime stdate;
    if(DateTime.TryParse(txtStartingdate.Text, out stdate))
    {
        //cmd.Parameters.AddWithValue("@projectstartingdate",stdate);
        SqlParameter projstrtdate = new SqlParameter("@projectstartingdate", SqlDbType.DateTime);
        projstrtdate.Value = stdate;
        cmd.Parameters.Add(projstrtdate);
    }
    DateTime enddate;
    if (DateTime.TryParse(txtProjectendingdate.Text, out enddate))
    {
        //cmd.Parameters.AddWithValue("@projectendendingdate", enddate);
        SqlParameter projenddate = new SqlParameter("@projectendendingdate", SqlDbType.DateTime);
        projenddate.Value = enddate;
        cmd.Parameters.Add(projenddate);
    }
    if (objconn.State == ConnectionState.Closed)
    {
        objconn.Open();
    }
    norowaffected = cmd.ExecuteNonQuery();
    objconn.Close();
}
catch (Exception ex)
{
    Response.Write( ex.ToString());
}

请指导我在哪里做错了?

2 个答案:

答案 0 :(得分:0)

之前我遇到过同样的问题。我通过删除数据库中的相应列来修复它,并使用正确的格式重新创建它#34;所以你的日期时间为#34;。问题得到解决。 似乎数据库中仍有信息告诉它之前是什么格式。

答案 1 :(得分:0)

您的语言环境配置可能正在尝试以错误的意外格式转换数据字符串。

尝试以下方法:

if(DateTime.TryParse(txtStartingdate.Text, out stdate)
{
    SqlParameter projectStartingDateParam = new SqlParameter("@projectstartingdate", SqlDbType.DateTime);
        projectStartingDateParam.Value = stdate;
    cmd.Parameters.Add(projectStartingDateParam);
}

对" projectendingdate"做同样的事情。创建一个SqlParameter,其SqlDbType等于SqlDbType.DateTime,并将其添加到查询命令(cmd变量)。

如果此操作无效,请仔细检查您的表格结构是否为DateTime格式。 通过SQL Server Management Studio直接手动插入数据库。