我收到此错误:
无法将MySQL日期/时间值转换为System.DateTime
当我试图从MySQL数据库中获取数据时。 我的MySQL数据库中有 date 数据类型。但是在将其检索到我的数据表中时,它会得到上面的错误。
我该如何解决这个问题?
答案 0 :(得分:181)
您必须将Convert Zero Datetime=True
添加到连接字符串中,例如:
server=localhost;User Id=root;password=mautauaja;Persist Security Info=True;database=test;Convert Zero Datetime=True
答案 1 :(得分:43)
如果我谷歌“无法将MySQL日期/时间值转换为System.DateTime”,我看到许多引用从Visual Studio访问MySQL的问题。这是你的背景吗?
建议的一个解决方案是:
这不是一个错误,而是预期的 行为。请查看手册 连接选项并设置“允许零” 日期时间“为真,如附加 图片,错误将消失。
答案 2 :(得分:18)
我添加了Convert Zero Datetime=True
& Allow Zero Datetime=True
并且工作正常
答案 3 :(得分:3)
将日期时间值作为字符串向下拉并执行DateTime.ParseExact(value, "ddd MMM dd hh:mm:ss yyyy", culture, styles);
您只需要为从数据库返回的日期设置日期格式。最有可能的是yyyy-MM-dd HH:mm:ss
。至少对我而言。
答案 4 :(得分:2)
让MySql将你的unix时间戳转换为字符串。使用mysql函数FROM_UNIXTIME(113283901)
答案 5 :(得分:1)
我也面临同样的问题,并获取列名称及其类型。然后从表名转换(col_Name作为Char)。从这个方面我得到的问题是'0000-00-00 00:00:00'然后我更新为有效的日期和时间错误离开我的情况。
答案 6 :(得分:1)
您可以使应用程序与MySql使用的日期和时间完全兼容。当应用程序在运行时运行时提供此代码。 首先转到应用程序事件。 在工具列表中
这将打开一个新文件。此文件包含在应用程序开始时使用的代码。
将此代码写入该新文件中:
Partial Friend Class MyApplication
Private Sub MyApplication_Startup(ByVal sender As Object, ByVal e As Microsoft.VisualBasic.ApplicationServices.StartupEventArgs) Handles Me.Startup
My.Application.ChangeCulture("en")
My.Application.ChangeUICulture("en")
My.Application.Culture.DateTimeFormat.ShortDatePattern = "yyyy-MM-dd"
My.Application.Culture.DateTimeFormat.LongDatePattern = "yyyy-MM-dd"
My.Application.Culture.DateTimeFormat.LongTimePattern = "HH:mm:ss"
My.Application.Culture.DateTimeFormat.ShortTimePattern = "HH:mm:ss"
End Sub
End Class
答案 7 :(得分:0)
您可以使用IsValidDateTime
对象的MySqlDateTime
属性而不是更改连接字符串来帮助您确定是否可以将该对象转换为DateTime
。
我有一种情况,我试图从“ UpdateTime”列中加载数据,该列仅在对行进行更新时才显式设置(而不是始终设置的InsertedTime)。对于这种情况,我使用了MySqlDataReader.GetMySqlDateTime
方法,如下所示:
using (MySqlDataReader reader = await MySqlHelper.ExecuteReaderAsync(...))
{
if (await reader.ReadAsync())
{
DateTime? updateTime = reader.GetMySqlDateTime("UpdateTime").IsValidDateTime ? (DateTime?)reader["UpdateTime"] : null;
}
}
答案 8 :(得分:0)
如果“允许零日期时间= true” 不起作用,请使用以下解决方法:-
将此添加到您的连接字符串中:“允许零datetime = no” -使类型转换能够完美工作。
答案 9 :(得分:0)
在Stimulsoft报告中,将此参数添加到连接字符串中 (右键单击数据源->编辑)
Convert Zero Datetime=True;
答案 10 :(得分:0)
当您将 EF edmx 与 MySql 一起使用时,请查看实体类型中的 Precision 属性。
<EntityType Name="table">
<Key>
<PropertyRef Name="Id" />
</Key>
<Property Name="Id" Type="int" StoreGeneratedPattern="Identity" Nullable="false" />
<Property Name="date_field" Type="datetime" Precision="0" Nullable="false" />
</EntityType>
如果您在日期时间字段中进行了更改,则可能缺少该属性中的此属性。