将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)
答
你不能只是把这些东西一个数据类型转换的另一种不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连接的其他选项:
你是什么意思,只是前10个字符?你想分离时间吗?如果变量是DateTime,则最好将其保留为DateTime。它不会像字符串中的日期时间行为 – Plutonix
我的MySQL字段是'日期',但是当运行选择查询时,在vb.net由于某种原因显示为'DateTime',因为它会返回日期,然后'00:00 :00'所以我只是想获得日期,但它很好地把它作为一个字符串。一旦选定它不再需要成为'Date' – charlie
是的,我可以做,为什么? – charlie