【问题标题】:Datetime issues with vb.net and MSSQLvb.net 和 MSSQL 的日期时间问题
【发布时间】:2016-09-14 10:52:09
【问题描述】:

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

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

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

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

所以我想将日期转换为 vb.net,将其存储在声明为“日期”或“日期时间”的变量中(都尝试过),转换为可接受的格式并将变量插入到 Sql 命令中。

我用来转换日期的以下命令。

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.

还有很多我现在没有发布的其他功能。

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

我也一一尝试了字段的数据类型为 date/datetime/datetime2(7)。

甚至尝试通过一些 Convert/Cast 函数直接转换为 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

【问题讨论】:

  • dd/MM/yyyy 我想要这样通过 datetimepicker.text 我得到那个格式,后来我通过上面写的函数转换为 MM/dd/yyyy 但对我不起作用
  • 来自ats 的明确 ISO 标准日期之一是 yyyy-mm-dd hh:mm:ss。此外,您不应将日期作为字符串传递。见stackoverflow.com/questions/34358886/…
  • okie 我试试 yyyy-mm-dd hh:mm 说你@Alex,我想我以前做过,但试着再说一遍......

标签: sql-server vb.net winforms


【解决方案1】:

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

.Net Datetime maps directly 到 sql server datetime,由于datetime stores no display format,你完全不用担心表示层的格式。

只需将 value 属性作为 参数 传递给您的 sql 语句。延伸阅读:How do I create a parameterized SQL query? Why Should I?

【讨论】:

  • 现在得到这个“varchar 数据类型到 datetime 数据类型的转换导致超出范围的值”请解释一下这是什么???以及对此的任何解决方案。 @Zohar Peled..
  • 您将 varchar 值发送到您的 sql 语句,而不是使用 datetime 数据类型的参数。请编辑您的问题以显示执行它的 sql 语句和 vb.net 代码。
  • 检查代码@Zohar Peled,我按照您的说法尝试了 From_dt.value 但给了我不同的东西“将 varchar 数据类型转换为 datetime 数据类型导致值超出范围”...代码中 Try 下面的行在我也尝试过这些东西时被注释掉了......!
  • @bonny - Zohar 告诉你 use parameters。 IE。不要试图将你的 SQL 构造成一个大的字符串。转换为 strings 会给您带来格式问题。
  • okieee,所以我在 sqlcommand 中使用参数作为日期而不是字符串,是不是像 @Damien_The_Unbeliever
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-07-23
  • 2013-01-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多