gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 23:36:03 25 4
gpt4 key购买 nike

我正在从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)

最佳答案

您不能不进行转换就将一种数据类型塞入另一种数据类型的变量中。一些代码不会在 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" 的内容在显示它或转换为字符串时忽略它。 SubString 和魔数(Magic Number) 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 连接还有许多其他选项:

MySQL ConnectionString options

关于mysql - 将 MySQL 日期时间字段转换为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35711333/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com