【问题标题】:converting MySQL datetime field to string将 MySQL 日期时间字段转换为字符串
【发布时间】:2016-06-13 04:30:06
【问题描述】:

我正在从 MySQL 读取数据,其中一个字段是 MySQL 中的 datetime 字段。

我想将值放入一个变量并转换为一个字符串,这样我就可以得到前 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)

【问题讨论】:

  • 什么意思,只有前 10 个字符?你想分裂时间吗?如果变量是 DateTime,最好将其保留为 DateTime。在字符串中时它不会像 DateTime 一样
  • 我的 MySQL 字段是 Date 但是在运行选择查询时,在 vb.net 中由于某种原因它显示为 DateTime 因为它会返回日期然后 00:00:00 所以我只是试图获取日期,但将其作为字符串很好。一旦选择它不再需要是Date
  • 是的,我可以,但为什么?
  • 哈哈,好吧,谢谢你的帮助!
  • 最后是坏数据什么的,所以什么也没增加

标签: mysql .net vb.net datetime


【解决方案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 总是有一个 Date 和一个 Time。要忽略时间,请在显示或转换为字符串时使用"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 特别会返回零日期时间而不是抛出异常。在这种情况下(在 cmets 中解决),由于返回是零日期,但不是在数据库中看到的,删除它并创建一个新行解决了它。

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

MySQL ConnectionString options

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-29
    • 2012-06-23
    • 1970-01-01
    • 1970-01-01
    • 2022-08-18
    相关资源
    最近更新 更多