Vb.net 无法将日期时间(.net)转换为日期时间(SQL server)

Vb.net 无法将日期时间(.net)转换为日期时间(SQL server),vb.net,parameters,.net-4.0,sql-server-2012,sqlcommand,Vb.net,Parameters,.net 4.0,Sql Server 2012,Sqlcommand,我试图将一个字符串(来自文本文件)-“17/07/99”传递到sql server表中-目标是一个日期列。 插入内容为字符串,格式为: Dim cmd As New SqlCommand(...yada...) cmd.CommandText = "INSERT INTO my.table (thisDate, ...etc... ) VALUES (@myDate, ...etc...)" 我使用以下方法将参数添加到cmd: cmd.Parameters.Add("@myDate", Sq

我试图将一个字符串(来自文本文件)-“17/07/99”传递到sql server表中-目标是一个日期列。 插入内容为字符串,格式为:

Dim cmd As New SqlCommand(...yada...) 
cmd.CommandText = "INSERT INTO my.table (thisDate, ...etc... ) VALUES (@myDate, ...etc...)"
我使用以下方法将参数添加到cmd:

cmd.Parameters.Add("@myDate", SqlDbType.DateTime).Value = Date.ParseExact("11/11/11", "dd/MM/yy", CultureInfo("en-GB"))
当我来到
ExecuteNonQuery

我得到
无法将字符串转换为datetime
错误。 我以为ParseExact正在做从字符串到日期时间的转换

我真的需要在sql中进行转换以及使用datetime结构吗

试试这个:

cmd.Parameters.Add("@myDate", SqlDbType.DateTime).Value = new DateTime(2011, 11, 11);
还可以看到:


在添加字符串之前,请尝试格式化该字符串

Format(YourTimeStringHere, dd-MM-yy)

刚刚测试了这个,它工作了。。。你只需要格式化你的日期,如果你想它是一致的,无论你的操作系统是什么文化,否则你不必这样做

你可以用这种方式

Dim d As Date = "17/07/99"
Dim d As Date = "17.07.99"
或者你可以用这种方式

Dim d As Date = "17/07/99"
Dim d As Date = "17.07.99"
如果你只有日期而没有时间,那么你用什么也没关系 你可以用这个

cmd.Parameters.Add("@myDate", SqlDbType.DateTime).Value = d
还是这个

cmd.Parameters.Add("@myDate", SqlDbType.Date).Value = d

我只是尝试了两个版本的混合版本,没有任何错误,插入的行应该是我一直在使用的。Value=CType(“11/11/11”,DateTime)不鼓励使用传统的VB
Format
函数。改为使用
String.Format
。相同-无法从字符串转换为日期时间。我正在重新配置代码,尝试以稍微不同的方式处理传入的数据。我打算使用ints保存文件中的年/月/日,然后使用新的日期时间(年、月、日)推送它们。已解决!这是一个有效的方法-问题是方向盘后面的白痴…;)当我向另一个参数传递一串颜色名称时,它(不知何故)被设置为sqldbtype.datetime!好极了!祝你有美好的一天!这确实是问题所在——我第一次编写的测试版本在我的机器上运行得很好,但当我转移到一个实时服务器时,它坏了——服务器似乎是使用美国日期格式设置的,导致了这个问题。