Vb.net 无法将日期时间(.net)转换为日期时间(SQL server)
我试图将一个字符串(来自文本文件)-“17/07/99”传递到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
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!好极了!祝你有美好的一天!这确实是问题所在——我第一次编写的测试版本在我的机器上运行得很好,但当我转移到一个实时服务器时,它坏了——服务器似乎是使用美国日期格式设置的,导致了这个问题。