你不能只是把这些东西一个数据类型转换的另一种不convertin变量G。一些代码不会在选项严格编译,因为它试图做到这一点:
Dim cdr_date As DateTime = reader.GetDateTime(0).ToString()
这听起来像你正试图剥去分贝VAR时间,所以把它作为一个DateTime那么如果你必须把它作为字符串转换的地方是:
Dim myDT As DateTime
rdr.Read()
' these do the same thing - get it as date:
myDT = Convert.ToDateTime(rdr("zDateTime"))
myDT = rdr.GetDateTime(0)
一个DateTime将永远有一个日期和时间。要忽略时间,请使用类似"MM/dd/yyyy"的内容在显示或转换为字符串时忽略它。 SubString并且不需要幻数10。
TextBox13.Text = myDT.ToString("MM/dd/yyyy")
或保存到一个字符串变量:
Dim notADate As String
' from a DB Reader:
notADate = rdr.GetDateTime(0).ToString("MM/dd/yyyy")
' in general:
notADate = myDT.ToString("MM/dd/yyyy")
然而,这个:unable to convert datetime to system datetime表示别的东西是错误的。 DB Provider对象显然无法将db数据转换为.NET DateTime类型。最可能的原因是数据不好。
而不是零,MySQL能够被告知存储01/01/0001 00:00:00作为一个“零日”对于这一点,你可能需要修改连接字符串追加这一点:
"server=....;convertzerodatetime=True;allowzerodatetime=True"
这些使存储和转换其他非法的DateTime值AllowZeroDateTime尤其会返回零日期时间而不是抛出异常在这种情况下(在注释中解决),因为返回是零日期,但不是在数据库中看到的东西,删除它并创建一个新的行解决了它。
有很多很多o MySQL连接的其他选项: