0

我正在尝试更新数据库中的日期,该日期在开始时设置为 null,并且用于日期的数据类型是nvarchar(50).

我什至在 SQL Server 中尝试过nchar, date,varchar(50)数据类型,但是在更新它时出现错误消息:

从字符串转换日期和/或时间时转换失败。

如何摆脱这种情况,我想使用 2-feb-2013 格式显示日期

dd.tostring("D);

它不工作。

SqlCommand cmd = new SqlCommand("update barcode set intime=@time,date='@date' where bcd=@bcd", con);
cmd.Parameters.Add("@cc", SqlDbType.NChar, 20).Value = c;
cmd.Parameters.Add("@bcd", SqlDbType.NChar, 20, "bcd").Value = textBox1.Text;
DateTime dd = DateTime.Now;

String ss, sss;
ss = dd.ToString("t");
sss = dd.ToString("d");

cmd.Parameters.Add("@time", SqlDbType.NVarChar, 50, "intime").Value = ss;
cmd.Parameters.Add("@date", SqlDbType.Date, 50, "date").Value = sss;
cmd.ExecuteNonQuery();
4

2 回答 2

1

好吧,我不明白为什么要为此使用字符串参数,或者为什么在将日期和时间值发送到数据库之前关心格式。无论如何,既然 SQL Server 也可以告诉时间,为什么要让应用程序这样做呢?CURRENT_TIMESTAMP您可以通过为 theintime和列设置默认值来绕过所有这些date(因此您甚至不需要在插入时指定它们),并且在更新时,如果实际上您确实需要更新这些列:

UPDATE dbo.barcode 
  SET intime = CURRENT_TIMESTAMP,
      [date] = CURRENT_TIMESTAMP
  WHERE bcd = @bcd;
于 2013-02-20T13:49:47.960 回答
0

因为你@date用单引号括起来。参数不应用单引号引起来。删除它,它会工作。

UPDATE barcode 
SET    intime = @time,
       date = @date 
WHERE  bcd = @bcd

还有一件事,保持日期格式不变。仅在投影期间转换日期(选择

于 2013-02-20T13:45:18.113 回答