SQL2005中datetime列update失败

守护天翼 2011-03-09 12:15:38
SQL2005中有个时间列,默认值我设置的是getdate(),可以正常显示时分秒,但是我想在外面可以update修改时间,但是一直弹出修改失败!源代码如下:

string pid=dataGridView1.SelectedRows[0].Cells[0].Value.ToString();
string pname = dataGridView1.SelectedRows[0].Cells[1].Value.ToString();
string pprice = dataGridView1.SelectedRows[0].Cells[2].Value.ToString();
string pnote = dataGridView1.SelectedRows[0].Cells[3].Value.ToString();
DateTime ptime = DateTime.Parse(dataGridView1.SelectedRows[0].Cells[5].Value.ToString());
mc.GetCon();
string sql = "UPDATE user_product SET product_name = '"+pname+"', product_price = "+pprice+", product_note = '"+pnote+"', ptype_time = "+ptime+" WHERE (product_id = "+pid+")";
int n = mc.execNoQuery(sql);
if (n > 0)
{
MessageBox.Show("修改成功!");
}
else
{
MessageBox.Show("修改失败!");
}

我觉得是修改时间问题上出了差错,而且我测试了一下,当我用

UPDATE user_product
SET ptype_time = 2011-01-04
WHERE (product_id = 1)
可以正常修改,但是修改过后在SQL2005的数据却是1905/6/30 0:00:00
请教CSDN上各位高手帮小弟解决下
...全文
124 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
守护天翼 2011-03-09
  • 打赏
  • 举报
回复
明白了,102是 ANSI yy.mm.dd ,又学习了,呵呵
守护天翼 2011-03-09
  • 打赏
  • 举报
回复
不过这个102是什么意思啊?
守护天翼 2011-03-09
  • 打赏
  • 举报
回复
问题解决了,把SQL的语句改成:

UPDATE user_product
SET ptype_time = CONVERT(DATETIME, '2011-01-01 00:00:00', 102)
WHERE (product_id = 1)

就可以修改成功了。不过还是谢谢1楼的大哥
子夜__ 2011-03-09
  • 打赏
  • 举报
回复
DateTime ptime = DateTime.Parse(dataGridView1.SelectedRows[0].Cells[5].Value.ToString());

改成
string ptime = dataGridView1.SelectedRows[0].Cells[5].Value.ToString();

试下..
不行的话 直接数据库中的 ptype_time 改成nvarchar(50) 哈哈。

断点跑你的SQL语句 复制到数据库里执行。。

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧