将“dd / MM / yyyy”转换为“MM / dd / yyyy”

时间:2015-01-03 01:43:46

标签: sql-server vb.net date

我在将日期插入数据库并显示它时遇到问题 我使用Visual Basic 2013和Microsoft SQL数据库文件 我有一个名为约会的表,有一个名为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

2 个答案:

答案 0 :(得分:1)

使用ADO.NET中的命令对象传递查询,并使用其机制插入参数。将日期作为字符串传递是问题的根源。您不能保证将SQL Server数据库配置为与您的硬编码日期格式兼容的排序规则。

请参阅How to pass a parameter from vb.net

答案 1 :(得分:0)

您的语句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));

http://www.sqlfiddle.com/#!3/65cdd/1/0

相关问题