将nvarchar数据类型转换为datetime数据类型导致值超出范围



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

"将nvarchar数据类型转换为datetime数据类型导致值超出范围"。

我在数据库中采用了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());
}

请指引我哪里做错了?

您的区域设置配置可能试图以错误的意外格式转换数据字符串。

尝试以下操作:

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

对"projectendingdate"执行相同操作。创建一个SqlDbType等于SqlDbType.DateTime的SqlParameter,并将其添加到查询命令(cmd变量)中。

如果这不起作用,请仔细检查表结构是否为DateTime格式。通过SQLServerManagementStudio直接在数据库中手动插入。

我以前也遇到过同样的问题。我通过删除数据库中相应的列来修复它,并用正确的格式"所以日期时间适合你"重新创建它。问题已解决。数据库中似乎仍然有信息表明它以前是什么格式的。

相关内容

  • 没有找到相关文章

最新更新