从字符串转换日期时间时转换失败

Comversion failed when converting datetime from character string

我制作了一个按钮,可以将当前日期和时间输入到 sql

中的数据库中
Dim curDate As DateTime = DateTime.Now
Dim regDate As String = curDate.ToString("yyyy-MM-dd HH:mm:ss")
qr = "Insert into sales (SaleDate) Values ('" & regDate & "')

它在另一个表单上的另一个按钮上工作,但我在差异表单上的差异按钮上遇到了这个错误

我试过这样做

qr = "Insert into sales (SaleDate) Values ('" & DateTime.Now & "')

但是没用

你的按钮

            cmd.CommandText = "insert into sales (Date,Time) values (@Date,@Time)"
            cmd.Parameters.AddWithValue("@Date", DateTime.Now.ToString("dd MMMM,yyyy"))
            cmd.Parameters.AddWithValue("@Time", TimeOfDay.ToString("h:mm:ss tt"))

需要关闭和释放数据库对象。 Using...End Using 块会为您解决这个问题,即使出现错误也是如此。

我不得不猜测您使用的是哪种数据库。如果不是 Sql 服务器,那么您需要更改数据库对象的类型。例如,对于 Access,它将是 OleDbConnection 等..

如果 SalesDate 不是数据库中的 DateTime 数据类型,它应该是。

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Using cn As New SqlConnection("Your connection string"),
            cmd As New SqlCommand("Insert into sales (SaleDate) Values (@regDate);", cn)
        cmd.Parameters.Add("@regDate", SqlDbType.DateTime).Value = DateTime.Now
        cn.Open()
        cmd.ExecuteNonQuery()
    End Using
End Sub

This was a good solution 在之前的 post 中。

可能的原因是涉及到日期,也就是你用来插入数据的数据DateTime.Now() 不是必需的格式。这仅仅是因为您试图存储系统无法接受的错误数据。 尝试使用 ISO-8601 日期格式,这是 SQL 服务器的最佳选择。

您可以查看 CAST and CONVERT (Transact-SQL) 的文档。