从c#中插入datetime到SQL Server数据库

本文关键字:SQL Server 数据库 datetime 插入 | 更新日期: 2023-09-27 18:14:10

当我尝试将datetime值插入SQL Server数据库时,我得到此错误:

从字符串

转换日期和/或时间时,转换失败
代码:

connection.Open();
SqlCommand command = new SqlCommand("insert into table values(@time)", connection);
command.Parameters.AddWithValue("@time", DateTime.Now);
command.ExecuteNonQuery();
connection.Close();

table有1列datetime称为time

编辑:
我的表创建在msSQL 2012: https://i.stack.imgur.com/xaxag.png
我的实际代码是:

public void vytvorDotaz(String uzivatel, DateTime cas, String nazev, String dotaz)
    {
        int id = getMaxID() + 1;
        connection.Open();
        SqlCommand command = new SqlCommand("insert into otazky values('" + id + "', '" + uzivatel + "', '0','0','0','@cas','" + nazev + "','" + dotaz + "')", connection);
        command.Parameters.AddWithValue("@cas", DateTime.Now);
        command.ExecuteNonQuery();
        connection.Close();
    }

从c#中插入datetime到SQL Server数据库

这里的实际问题是您将参数写在引号内:

... ,'0','@cas',' ...
         ^    ^

这将不使用@cas作为参数,您实际上试图将字符串"@cas"插入该列,而不是参数@cas的内容。

去掉引号,那部分就可以了。

另外,不要使用字符串连接来构建SQL,使用参数来处理所有事情,这样可以避免SQL注入攻击或引号之类的麻烦。这与您正在使用的"id"、"uzivatel"、"nazev"answers"dotav"参数(即方法参数)有关。

看起来你需要:

 insert into table values(@time)

不带单引号

尝试System.Data.SqlTypes.SqlDateTime另外,当存储日期时,请考虑将它们存储为UTC,以防止混淆