将 "dd/MM/yyyy" 转换为 "MM/dd/yyyy"
Convert "dd/MM/yyyy" to "MM/dd/yyyy"
我在将日期插入数据库并显示它时遇到问题。
我将 Visual Basic 2013 与 Microsoft SQL 数据库文件一起使用。
我有一个名为 Appointments 的 table,有一列名为 Date 的日期类型。
我有一个带有 DateTimePicker 的表单,以这种格式显示日期 "dd/MM/yyyy" 我的计算机区域设置。
当我尝试将其插入数据库时,通过从 DateTimePicker 获取日期,如下所示:
DateTimePicker1.Value.Date
我仍然遇到错误。我知道 Microsoft SQL 只采用这种格式 "MM/dd/yyyy",但是有什么方法可以使用 visual basic 和 sql 从 "dd/MM/yyyy" 转换为 "MM/dd/yyyy" 吗?
Dim con As New SqlConnection("Data Source=(LocalDB)\v11.0;AttachDbFilename=" + My.Settings.strTextbox + ";Integrated Security=True;Connect Timeout=30")
Dim cmd As New SqlCommand("insert into Appointment (AssignDoc,Date,TimeFrom,FileNo) values (@AssignDoc,@Date,@TimeFrom,@FileNo)")
cmd.Connection = con
con.Open()
cmd.Parameters.AddWithValue("@AssignDoc", ComboBox6.SelectedItem)
cmd.Parameters.AddWithValue("@Date", DateTimePicker1.Value.Date)
cmd.Parameters.AddWithValue("@TimeFrom", ComboBox1.SelectedItem)
cmd.Parameters.AddWithValue("@FileNo", TextBox2.Text)
Dim reader As SqlDataReader = Nothing
Try
cmd.ExecuteNonQuery()
con.Close()
'CreateAppointment()
MsgBox("Appointment Created Successfully", MsgBoxStyle.Information, "Appointment Created")
TextBox1.Text = ""
TextBox2.Text = ""
Catch ex As System.Exception
MsgBox(ex.Message)
End Try
使用ADO.NET中的命令对象传递查询,并使用其机制插入参数。将日期作为字符串传递是问题的根源。您不能保证 SQL 服务器数据库将配置为与您的硬编码日期格式兼容的排序规则。
见How to pass a parameter from vb.net
您的陈述 I know that Microsoft SQL only takes this format "MM/dd/yyyy"
本身是错误的,因为 SQL 采用任何指定格式的日期 here
您只需将它们转换为该格式,然后再将其输入数据库。
例如如果您以 "mm/dd/yyyy" 格式传递参数,则需要将 sql 格式的参数转换为
insert into Appointments (Date) values (convert(date,@parameter,101));
我在将日期插入数据库并显示它时遇到问题。
我将 Visual Basic 2013 与 Microsoft SQL 数据库文件一起使用。
我有一个名为 Appointments 的 table,有一列名为 Date 的日期类型。
我有一个带有 DateTimePicker 的表单,以这种格式显示日期 "dd/MM/yyyy" 我的计算机区域设置。
当我尝试将其插入数据库时,通过从 DateTimePicker 获取日期,如下所示:
DateTimePicker1.Value.Date
我仍然遇到错误。我知道 Microsoft SQL 只采用这种格式 "MM/dd/yyyy",但是有什么方法可以使用 visual basic 和 sql 从 "dd/MM/yyyy" 转换为 "MM/dd/yyyy" 吗?
Dim con As New SqlConnection("Data Source=(LocalDB)\v11.0;AttachDbFilename=" + My.Settings.strTextbox + ";Integrated Security=True;Connect Timeout=30")
Dim cmd As New SqlCommand("insert into Appointment (AssignDoc,Date,TimeFrom,FileNo) values (@AssignDoc,@Date,@TimeFrom,@FileNo)")
cmd.Connection = con
con.Open()
cmd.Parameters.AddWithValue("@AssignDoc", ComboBox6.SelectedItem)
cmd.Parameters.AddWithValue("@Date", DateTimePicker1.Value.Date)
cmd.Parameters.AddWithValue("@TimeFrom", ComboBox1.SelectedItem)
cmd.Parameters.AddWithValue("@FileNo", TextBox2.Text)
Dim reader As SqlDataReader = Nothing
Try
cmd.ExecuteNonQuery()
con.Close()
'CreateAppointment()
MsgBox("Appointment Created Successfully", MsgBoxStyle.Information, "Appointment Created")
TextBox1.Text = ""
TextBox2.Text = ""
Catch ex As System.Exception
MsgBox(ex.Message)
End Try
使用ADO.NET中的命令对象传递查询,并使用其机制插入参数。将日期作为字符串传递是问题的根源。您不能保证 SQL 服务器数据库将配置为与您的硬编码日期格式兼容的排序规则。
见How to pass a parameter from vb.net
您的陈述 I know that Microsoft SQL only takes this format "MM/dd/yyyy"
本身是错误的,因为 SQL 采用任何指定格式的日期 here
您只需将它们转换为该格式,然后再将其输入数据库。
例如如果您以 "mm/dd/yyyy" 格式传递参数,则需要将 sql 格式的参数转换为
insert into Appointments (Date) values (convert(date,@parameter,101));