将MySQL datetime字段转换为字符串

时间:2016-02-29 22:50:40

标签: mysql .net vb.net datetime

我从MySQL读取数据,一个字段是MySQL中的日期时间字段。

我想将值转换为变量并转换为字符串,这样我就可以得到前10个字符:

Dim cdr_date As String = reader.GetString(0)

cdr_date = cdr_date.Substring(0, 10)

但是这在vb.net中显示错误,指出无法将datetime转换为系统日期时间

我也尝试了这些,但得到了同样的错误:

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)

1 个答案:

答案 0 :(得分:1)

你不能将一种数据类型填充到另一种数据类型而不进行转换。有些代码不会在Option Strict下编译,因为它试图这样做:

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

听起来你正试图从db 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"之类的内容,在显示或转换为字符串时忽略它。 <{1}},不需要10的幻数。

SubString

或者保存到字符串变量:

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") 表示其他错误。 DB Provider对象显然无法将db数据转换为NET DateTime Type。最可能的原因是数据不好。

而不是null,可以告诉MySQL将unable to convert datetime to system datetime存储为零日期&#34;。为此,您可能需要修改连接字符串以附加:

01/01/0001 00:00:00

这些可以存储和转换非法的"server=....;convertzerodatetime=True;allowzerodatetime=True" 值。特别是DateTime将返回零日期时间而不是抛出异常。在这种情况下(在注释中解决),由于返回是零日期但不是在DB中看到的,删除它并创建新行解决了它。

MySQL连接还有很多其他选项:

MySQL ConnectionString options