将MySQL日期时间字段转换为字符串

问题描述:

我从MySQL读取数据,其中一个字段是MySQL中的日期时间字段。将MySQL日期时间字段转换为字符串

我想要得到的值到一个变量,并转换为字符串,所以我可以只前10个字符:

Dim cdr_date As String = reader.GetString(0) 

cdr_date = cdr_date.Substring(0, 10) 

,但这正显示出说不能转换日期时间在vb.net错误系统日期时间

香港专业教育学院也尝试过这些,但得到了同样的错误:

Dim cdr_date As DateTime = reader.GetDateTime(0).ToString() 
cdr_date = cdr_date.Substring(0, 10) 


Dim cdr_date As DateTime = reader.GetString(0).ToString() 
cdr_date = cdr_date.Substring(0, 10) 
+0

你是什么意思,只是前10个字符?你想分离时间吗?如果变量是DateTime,则最好将其保留为DateTime。它不会像字符串中的日期时间行为 – Plutonix

+0

我的MySQL字段是'日期',但是当运行选择查询时,在vb.net由于某种原因显示为'DateTime',因为它会返回日期,然后'00:00 :00'所以我只是想获得日期,但它很好地把它作为一个字符串。一旦选定它不再需要成为'Date' – charlie

+0

是的,我可以做,为什么? – charlie

你不能只是把这些东西一个数据类型转换的另一种不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" 

这些使存储和转换其他非法的DateTimeAllowZeroDateTime尤其会返回零日期时间而不是抛出异常在这种情况下(在注释中解决),因为返回是零日期,但不是在数据库中看到的东西,删除它并创建一个新的行解决了它。

有很多很多o MySQL连接的其他选项:

MySQL ConnectionString options