【发布时间】: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