将字符串转换为日期或时间时转换失败

时间:2015-05-04 04:22:37

标签: sql sql-server datetime

我使用的表格包含3个nvarchar(MAX)列和1个datetime列。我在执行以下insert语句时收到此错误: -

  

将字符串转换为日期或时间时转换失败

     DateTime date = System.DateTime.Now;        
     SqlCommand cmd = new SqlCommand("insert into chats values('" + chatFrom + "','" + chatTo + "',@msg,'"+date+"')", conn);
    cmd.Parameters.Add("msg", msg);

3 个答案:

答案 0 :(得分:1)

首先,我可能会对所有这些变量使用参数,因为连接的字符串有点乱。

其次,根据我的经验,SQL对于日期/时间字符串的格式比编程语言更为挑剔。您可以尝试使用date.ToString("ddMMyy")之类的内容,或者使用适合您特定数据库的更合适的格式字符串以及要存储的精度级别。

答案 1 :(得分:0)

您需要使用日期值的参数:

 DateTime date = System.DateTime.Now;        
 SqlCommand cmd = new SqlCommand("insert into chats values('" + chatFrom + "','" + chatTo + "',@msg, @date)", conn);
cmd.Parameters.Add("msg", msg);
cmd.Parameters.Add(new SqlParameter("@date", SqlDbType.DateTime).Value = date);

答案 2 :(得分:-1)

很可能是因为您的默认日期格式的布局。

SQL Server无法判断是否' 01/04 / 2015'是4月1日或1月4日。

更改此行:

SqlCommand cmd = new SqlCommand("insert into chats values('" + chatFrom + "','" + chatTo + "',@msg,'"+ date.ToString("dd/MMM/yyyy") +"')", conn);
cmd.Parameters.Add("msg", msg);

使其明确无误。