我正在尝试使用INSERT INTO语法将DateTime
插入到DateTime2(7)
类型的SQL Server表列中。
我收到的错误是:
类型' System.Data.SqlClient.SqlException'未处理的异常 发生在System.Data.dll
中其他信息:转换日期和/或时转换失败 来自字符串的时间。
我使用以下内容初始化DateTime
变量:
DateTime TaskCreatedDate = DateTime.Now;
并在此处使用:
insertTaskCmd.Parameters.AddWithValue("@TaskCreatedDate", TaskCreatedDate);
有什么想法吗?
更新
我试过了:
insertTaskCmd.Parameters.Add("@TaskCreatedDate", SqlDbType.DateTime2).Value = TaskCreatedDate;
产生相同的错误。
完整查询:
string insertTask = String.Format("INSERT INTO [Tasks] VALUES (@TaskNumber, '@TaskCreatedDate', '', '', '', @Status, '3', '')");
SqlCommand insertTaskCmd = new SqlCommand(insertTask, conn);
insertTaskCmd.Parameters.AddWithValue("@TaskNumber", newTaskNumbers[i]);
insertTaskCmd.Parameters.Add("@TaskCreatedDate", SqlDbType.DateTime2).Value = TaskCreatedDate.ToString("yyyy-MM-dd HH:mm:ss");
insertTaskCmd.Parameters.AddWithValue("@Status", 0); // 0 is Active
insertTaskCmd.ExecuteNonQuery();
答案 0 :(得分:3)
我认为您的插入查询是错误的 - 您的单引号中有@TaskCreatedDate
- 不应该......
试试这个:
string insertTask = "INSERT INTO [Tasks] VALUES (@TaskNumber, @TaskCreatedDate, '', '', '', @Status, '3', '')";
SqlCommand insertTaskCmd = new SqlCommand(insertTask, conn);
insertTaskCmd.Parameters.Add("@TaskNumber", SqlDbType.Int).Value = newTaskNumbers[i];
insertTaskCmd.Parameters.Add("@TaskCreatedDate", SqlDbType.DateTime2).Value = TaskCreatedDate;
insertTaskCmd.Parameters.Add("@Status", SqlDbType.Int).Value = 0; // 0 is Active
insertTaskCmd.ExecuteNonQuery();
注意:我还建议always明确指定要插入的列:
string insertTask = @"INSERT INTO [Tasks](TaskNumber, TaskCreatedDate, .., .., .., Status, .. ..)
VALUES (@TaskNumber, @TaskCreatedDate, '', '', '', @Status, '3', '')");
答案 1 :(得分:0)
固定。
注意@TaskCreatedDate周围有单引号(')。删除它们并解决它。