- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 C# 应用程序,需要将当前日期时间插入 MySQL 数据库中的 datetime
字段。我该如何实现这个目标?
我正在使用 MySQL Connector/NET 6.9.9。以下是我到目前为止所尝试过的。 data.currentDateTime
的类型为 MySqlDateTime
。
数据库中的预期结果是正确的日期时间,但实际值为 0000-00-00 00:00:00
。
// Set up data object and add datetime
MyData data = new MyData();
data.currentDateTime = new MySqlDateTime(DateTime.Now);
// Insert into database
try
{
MySqlConnection conn = getMySqlConnection();
conn.Open();
MySqlCommand cmd = new MySqlCommand(@"
INSERT INTO my_data (`current_datetime`)
VALUES (@currentDateTime)
", conn);
log.Debug(data.currentDateTime); // correct timestamp
cmd.Parameters.AddWithValue("currentDateTime", data.currentDateTime);
cmd.ExecuteNonQuery();
// Value in the database is 0000-00-00 00:00:00
} catch (Exception e) {
// Hnadle exception
}
MyData 类:
public class MyData
{
public int id { get; set; }
public MySqlDateTime currentDateTime { get; set; }
// Other fields
public MyData()
{
// Empty constructor
}
}
最佳答案
您遇到了 MySQL bug 91199 的变体.
默认SQL mode ,MySQL 服务器将拒绝由 Connector/NET 序列化的不正确的 MySqlDateTime
,并显示 不正确的日期时间值
错误。
但是,如果您的 MySQL 服务器没有 NO_ZERO_DATE
和 strict mode启用,然后尝试插入 MySqlDateTime
将“成功”,但插入的值将为 0000-00-00 00:00:00
。
自 bug 91119已被错误地作为重复项关闭,这可能不会很快得到修复。作为解决方法,您可以考虑切换到 MySqlConnector ,Connector/NET 的 OSS 替代品,修复了这个问题(以及许多其他错误)。
要使用 MySql.Data 解决此问题,请添加基础 DateTime
作为参数值,而不是 MySqlDateTime
对象:
cmd.Parameters.AddWithValue("currentDateTime", data.currentDateTime.GetDateTime());
请注意,如果MySqlDateTime
无法转换为DateTime
,则会抛出MySqlConversionException
;如果您的代码中可能发生这种情况,您需要测试 data.currentDateTime.IsValidDateTime
并在结果为 false
时执行其他操作。
关于c# - 将 MySqlDateTime 值从 C# 插入到 MySQL 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51489520/
我在使用数据表更新 mySQL 数据库时遇到问题。我可以使用 INSERT 语句来完成此操作,但是当我插入一行并出现错误“无法在日期列中存储 ”时,表会分配失败。我有数百万条记录要插入,我认为这种方式
我正在尝试将 MySqlDateTime 对象与另一个 MySqlDateTime 对象进行比较,每个对象都来自两个不同的表。我正在尝试在 LINQ 查询中执行所有这些操作,例如: v
这个问题在这里已经有了答案: Convert DateTime for MySQL using C# (4 个答案) 关闭 9 年前。 我使用 MySQL 连接器从数据库接收数据并将值放入数据集->
好吧,我对数据库和 C# 总体来说非常陌生,但我正在使用一段代码将数据集数据导出到 Excel 文件,并且它在日期/时间格式方面存在问题。我正在使用 MySQL 连接器,因此行类型为 MySql.Da
我有一个 C# 应用程序,需要将当前日期时间插入 MySQL 数据库中的 datetime 字段。我该如何实现这个目标? 我正在使用 MySQL Connector/NET 6.9.9。以下是我到目前
DataColumn.DataType 返回 FullName = "MySql.Data.Types.MySqlDateTime",无论它代表的列类型是 DATE、TIME 还是 DATETIME。
我是一名优秀的程序员,十分优秀!