将 "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));

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