【问题标题】:Insert datetime into SQL Server 2008将日期时间插入 SQL Server 2008
【发布时间】:2013-07-30 13:15:11
【问题描述】:

我正在尝试将值从后面的代码插入到 datetime 列中。

在我的本地计算中它工作正常,但是当应用程序在服务器上时它给我一个错误:

字符串未被识别为有效的日期时间。

我试过这个方法:add_avent.startadd_avent.enddatetime

public void add_event(act_event add_avent)
{
   using (SqlConnection con = connect("igroup20_test2ConnectionString"))
   {
      using (SqlCommand cmd = create_command(con, "insert into act_events values(@e_name, @e_start, @e_end, @e_description, @e_address)"))
      {
          cmd.Parameters.AddWithValue("@e_name", add_avent.name);

          SqlParameter param2 = new SqlParameter("@e_start", SqlDbType.DateTime);
          param2.Value = add_avent.start;
          cmd.Parameters.Add(param2);

          SqlParameter param3 = new SqlParameter("@e_end", SqlDbType.DateTime);
          param3.Value = add_avent.end;
          cmd.Parameters.Add(param3);

          //cmd.Parameters.Add(new SqlParameter("@e_start", SqlDbType.DateTime));
          //cmd.Parameters["@e_start"].Value = add_avent.start;

          //cmd.Parameters.Add(new SqlParameter("@e_end", SqlDbType.DateTime));
          //cmd.Parameters["@e_end"].Value = add_avent.end;

          //cmd.Parameters["@e_end"].Value = DateTime.Parse(end);

          cmd.Parameters.AddWithValue("@e_description", add_avent.description);
          cmd.Parameters.AddWithValue("@e_address", add_avent.address);

          cmd.ExecuteNonQuery();
       }

       //using (SqlCommand cmd2=create_command
   }
}

我也尝试了评论部分的方法,它给了我同样的错误

///cmd.Parameters.Add(new SqlParameter("@e_start", SqlDbType.DateTime));
//cmd.Parameters["@e_start"].Value = add_avent.start;

//cmd.Parameters.Add(new SqlParameter("@e_end", SqlDbType.DateTime));
//cmd.Parameters["@e_end"].Value = add_avent.end;

【问题讨论】:

  • 检查你的服务器日期时间格式
  • 我认为您的格式可能有误。你试过 yyyy-MM-dd 吗?
  • 您根本不应该使用格式。您不应该处理文本 - 您应该只是将它们保留为 DateTime 值。如果仍然出现同样的问题,请准确地显示异常发生的位置。
  • 你为什么要把你的日期放在 ToString 上?他们是约会对象,就这样吧。
  • DateTimes 是否可以为空?此外,从不使用格式化字符串。

标签: c# asp.net sql-server sql-server-2008 datetime


【解决方案1】:

格式应该是MM-dd:

String start = add_avent.start.ToString("yyyy-MM-dd HH:mm");
String end = add_avent.end.ToString("yyyy-MM-dd HH:mm");

【讨论】:

    【解决方案2】:

    试试这个

    sql server 日期格式和你的系统日期格式不一样。所以你遇到了这个问题。

    param2.Value =Convert.ToDateTime(add_avent.start.ToString("yyyy-MM-dd HH:mm"));
    param2.Value = Convert.ToDateTime(add_avent.end.ToString("yyyy-MM-dd HH:mm"));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多