vb.net和MSSQL的日期时间问题

bon*_*nny 1 vb.net sql-server winforms

我一直在vb.net中创建一个桌面表单,我在其中使用了datetime-picker工具.我想要一个dd/MM/yyyy的格式,所以我保留了datetimepicker属性的格式.

但是,当我尝试将记录从vb.net插入MSSQL时,很明显会显示SQL异常:

从字符串转换日期和/或时间时转换失败.

因为MSSQL支持一些ISO格式和所有.(MM/dd/yyyy,接受并正确运行,我试过这个).

所以我想把日期转换为vb.net,将它存储在一个声明为'date'或'datetime'的变量中(同时尝试),并将其存储为可接受的格式并将变量插入到Sql Command中.

我用以转换日期的以下命令.

1) Fdt = Date.ParseExact(From_Dt.Text, "MM/dd/yyyy", Globalization.CultureInfo.InvariantCulture)-------- Searched the internet and got this stuff.

2) Fdt = Convert.ToDateTime(From_Dt.Text)

3) #" & format(DateTimePicker1.Value.Date) & "# ----directly inside the sqlcommand in vb.net.
Run Code Online (Sandbox Code Playgroud)

以及我现在没有发布的许多其他功能.

我没有得到一件事,所有上面的工作并给我结果MM/dd/yyyy(通过在运行时添加监视检查)但它仍然给我相同的例外,但如果我将日期格式从datetimepicker属性更改为MM/dd/yyyy然后sqlquery被接受,无异常..

甚至我一个接一个地尝试了字段的数据类型到date/datetime/datetime2(7).

甚至尝试通过一些转换/转换函数直接转换为SQLQuery,但我得到了相同的异常.

但是他们都没有工作,我提到了许多链接,这个问题可能与其他类似,但我没有找到任何解决方案,所以我最后不得不创建这个问题.

触发查询的代码:

Try
        'Dim Fdt As DateTime, Tdt As DateTime
        'Fdt = Date.ParseExact(From_Dt.Text, "yyyy-MM-dd", Globalization.CultureInfo.InvariantCulture)
        'Tdt = Date.ParseExact(To_Dt.Text, "yyyy-MM-dd", Globalization.CultureInfo.InvariantCulture)
        'Fdt = Convert.ToDateTime(From_Dt.Text)
        'Tdt = Convert.ToDateTime(To_Dt.Text)
        If txtCompName.Text <> nothing And cmbCompType.Text <> nothing Then
            If CheckEof("select * from Company where Comp_Year = '" & Year1 & "' and Comp_Code = '" & txtCompCode.Text & "'", con) Then
                cmd = New SqlCommand(("insert into Company (Comp_Year, Comp_Code, Comp_Name, Comp_Prop, Comp_Add1, Comp_Add2, Comp_City, Comp_Phone, Comp_FAX, Comp_GST, Comp_CST, Comp_PNR, Comp_TDSNo, Comp_DrugLIC1, Comp_DrugLIC2, Comp_Mess1, Comp_Mess2, Comp_FDT, Comp_TDT, Comp_Distribution, Comp_Juridiction, Comp_Type) values('" &
                Year1 & "','" & txtCompCode.Text & "','" & txtCompName.Text & "','" & txtCompShtName.Text & "','" &
                txtCompAdd1.Text & "','" & txtCompAdd2.Text & "','" & txtCompCity.Text & "','" & txtCompPhno.Text & "','" &
                txtCompMobile.Text & "','" & txtCompGST.Text & "','" & txtCompCST.Text & "','" & txtCompPAN.Text & "','" &
                txtCompTDS.Text & "','" & txtCompDrg1.Text & "','" & txtCompDrg2.Text & "','" & txtCompMsg1.Text & "','" &
                txtCompMsg2.Text & "','" & From_Dt.Value & "','" & To_Dt.Value & "','" & txtCompDist.Text & "','" &
                txtCompJuri.Text & "','" & cmbCompType.Text & "')"), con)
            End If
            ExecuteQuery()
            MsgBox("Company Created SuccessFully,", MessageBoxIcon.Information)
            CompCreation_Reset()
        Else
            MsgBox("Mandatory fields cannot be Blank", MessageBoxIcon.Stop)
            txtCompName.Focus()
        End If
    Catch ex As Exception
        MsgBox(ex.ToString)
    End Try
Run Code Online (Sandbox Code Playgroud)

Zoh*_*led 6

Winforms DateTimePicker有一个datetime名为的类型属性Value

.Net 直接映射到sql server ,并且由于datetime不存储任何显示格式,因此您根本不需要担心表示层的格式.Datetime datetime

只需将value属性作为参数传递给sql语句.进一步阅读:如何创建参数化SQL查询?我为什么要?