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

Sql server vb.net和MSSQL的日期时间问题,sql-server,vb.net,winforms,Sql Server,Vb.net,Winforms,我在vb.net中创建了一个桌面窗体,其中使用了日期时间选择器工具。我想要一个dd/MM/yyyy格式,所以我从datetimepicker属性中保留了该格式 但当我尝试将vb.net中的记录插入MSSQL时,很明显会显示SQL异常: 从字符串转换日期和/或时间时,转换失败 因为MSSQL支持一些ISO格式和所有格式(MM/dd/yyyy,接受并正确运行,我尝试了这个) 因此,我想将日期转换为vb.net,将其存储在声明为“date”或“datetime”的变量中(两者都尝试过),转换为可接受的

我在vb.net中创建了一个桌面窗体,其中使用了日期时间选择器工具。我想要一个dd/MM/yyyy格式,所以我从datetimepicker属性中保留了该格式

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

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

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

因此,我想将日期转换为vb.net,将其存储在声明为“date”或“datetime”的变量中(两者都尝试过),转换为可接受的格式,并将该变量插入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中给了我结果(通过在运行时添加watch进行检查),但它仍然给了我相同的异常,但是如果我将日期格式从datetimepicker属性更改为MM/dd/yyyy,那么sqlquery将毫无例外地被接受

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

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

但没有一个有效,我引用了很多链接,这个问题可能与其他问题类似,但我没有找到任何解决方案,所以我最终不得不创建这个问题

激发查询的代码:

试试看
'Dim Fdt作为日期时间,Tdt作为日期时间
'Fdt=Date.ParseExact(来自_Dt.Text,“yyyy-MM-dd”,Globalization.CultureInfo.InvariantCulture)
'Tdt=Date.ParseExact(To_Dt.Text,“yyyy-MM-dd”,Globalization.CultureInfo.InvariantCulture)
'Fdt=Convert.ToDateTime(从_Dt.Text)
'Tdt=Convert.ToDateTime(To_Dt.Text)
如果txtCompName.Text nothing和cmbCompType.Text nothing,则
如果选中EOF(“从公司中选择*,其中公司年份=”&Year1&“,公司代码=”&txtCompCode.Text&“”,con),则
cmd=新的SqlCommand(((“插入公司(公司年份、公司代码、公司名称、公司财产、公司地址1、公司地址2、公司城市、公司电话、公司传真、公司GST、公司CST、公司PNR、公司TDSNo、公司药品1、公司药品2、公司信息1、公司信息2、公司FDT、公司TDT、公司分配、公司类型)值(”&
年份1&“,”&txtCompCode.Text&“,”&txtCompName.Text&“,”,“&txtCompShtName.Text&“,”&
txtCompAdd1.Text&“,”&txtCompAdd2.Text&“,”&txtCompCity.Text&“,”&txtcompHno.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)
如果结束
ExecuteQuery()
MsgBox(“公司创建成功”,MessageBoxIcon.Information)
compu重置()
其他的
MsgBox(“必填字段不能为空”,MessageBoxIcon.Stop)
txtCompName.Focus()
如果结束
特例
MsgBox(例如ToString)
结束尝试
Winforms有一个名为

Net到sql server,因此,您根本不需要担心表示层的格式

只需将value属性作为参数传递给sql语句即可。进一步阅读:

Winforms有一个名为

Net到sql server,因此,您根本不需要担心表示层的格式


只需将value属性作为参数传递给sql语句即可。进一步阅读:

dd/MM/yyyy我想要datetimepicker.text我得到了这种格式,后来我用上面写的函数转换成了MM/dd/yyyy,但不适用于我。ATS中一个明确的ISO标准日期是yyyy-MM-dd hh:MM:ss。此外,不应将日期作为字符串传递。请看okie我尝试yyyy-mm-dd hh:mm并说你@Alex,我想我以前做过,但我想再次尝试说你….dd/mm/yyyy我想通过datetimepicker这样做。text我得到了该格式,后来我通过我上面写的函数转换为mm/dd/yyyy,但不适用于我ATS的一个明确的ISO标准日期是yyyy-mm-dd hh:mm:ss。此外,不应将日期作为字符串传递。请看okie,我尝试yyyy mm dd hh:mm并说你@Alex,我想我以前做过,但尝试再说一次你…现在明白了“将varchar数据类型转换为datetime数据类型导致值超出范围”请解释一下这是什么???以及任何解决方案@Zohar Peled..您正在向sql语句发送varchar值,而不是datetime数据类型的参数。请编辑您的问题,以显示sql语句和执行该语句的vb.net代码。检查代码@Zohar Peled,正如您所说,我尝试从_dt.value开始,但给出了不同的结果“将varchar数据类型转换为datetime数据类型导致值超出范围”。。。下面的代码中的Try行在我尝试这些东西时被注释为too@bonny-Zohar让你这么做的。也就是说,不要试图将SQL构造成一个大字符串。转换成字符串会给你带来格式问题。okieee,所以我在sqlcommand中使用paramater来表示日期,而不是字符串,是不是@Damien_the_unsieverGet now“将varchar数据类型转换为datetime数据类型导致值超出范围”请解释一下这是什么???以及任何解决方案@Zohar Peled ..你把VARCHAR值发送到SQL语句而不是PAR