我正在从MySQL中读取数据,其中一个字段是MySQL中的日期时间字段。
我想将值转换为变量并转换为字符串,以便仅获取前10个字符:
Dim cdr_date As String = reader.GetString(0)
cdr_date = cdr_date.Substring(0, 10)
但这在vb.net中显示错误,提示无法将datetime转换为系统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)
您不能只将一种数据类型填充到另一种数据类型中而不进行转换。有些代码不会在Option Strict下编译,因为它试图这样做:
Dim cdr_date As DateTime = reader.GetDateTime(0).ToString()
听起来您正在尝试从db var中剥离时间,所以DateTime
如果您必须在某个地方将其用作字符串来转换它,则将其获取为a :
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
为“零日期”而不是null,为此,您可能需要修改连接字符串以附加以下内容:
"server=....;convertzerodatetime=True;allowzerodatetime=True"
这些启用了其他非法DateTime
值的存储和转换。AllowZeroDateTime
特别是将返回零日期时间,而不是引发异常。在这种情况下(在注释中解决),由于返回的是零日期,而不是数据库中看到的内容,因此删除它并创建新行即可解决它。
MySQL连接还有很多其他选项:
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句