0

我正在使用 DateTimePicker 来选择日期,以及一个有时间的 TextBox。

我正在尝试将两个值都插入到表中,但它不起作用

INSERT INTO dt (date) VALUES('" & DateTimePicker1.Text  & TextBox1.Text & "');

date列是datetime类型。

代码显示此错误:从字符串转换日期时间时转换失败

4

3 回答 3

1

由于其表示形式的文化差异,您真的不想将日期时间作为字符串传递给您的数据库。相反,您可以使用参数传递日期时间类型。对于 SQL Server,你需要一些类似的东西

Dim dt As DateTime
dt = DateTimePicker1.Value.Date ' use only the date portion '
Dim tim As DateTime
If DateTime.TryParse(TextBox1.Text, tim) Then
    dt = dt + tim.TimeOfDay ' use only the time portion '
Else
    MsgBox("Could not understand the value in the time box. Using midnight.")
End If

Dim sql As String = "INSERT INTO dt (date) VALUES (@DateTime)"

Dim sqlCmd As New SqlCommand(sql, sqlConn)
sqlCmd.Parameters.Add(New SqlParameter With {.ParameterName = "@DateTime", .SqlDbType = SqlDbType.DateTime, .Value = dt})
'TODO: ExecuteNonQuery
于 2012-12-01T20:05:05.390 回答
0

您的日期必须经过格式化,才能将某种文化正确插入数据库。或者只使用文化中性字符串,例如dd-MMM-yyyy.

您的第一步是创建一个 DateTimeDateTimePicker1.Text并且TextBox1.Text- 您可以使用ParseExact。然后将您的 DateTime 格式化为.ToString("G")- 查看 MSDN 上的这篇文章以获取更多标准格式:标准日期和时间格式字符串

这里描述了类似的问题。

于 2012-12-01T18:54:56.373 回答
0

您需要在两个文本框的文本之间留一个空格:

insert into dt (date) values('" & DateTimePicker1.Text & " " & TextBox1.Text & "')
于 2012-12-01T17:46:29.563 回答