首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将MySqlDateTime值从C#插入到MySQL数据库

将MySqlDateTime值从C#插入到MySQL数据库
EN

Stack Overflow用户
提问于 2018-07-24 10:16:28
回答 1查看 306关注 0票数 0

我有一个C#应用程序,它需要将当前的日期时间插入到MySQL数据库的datetime字段中。我该如何做到这一点?

我使用的是MySQL连接器/NET 6.9.9。下面是我到目前为止所尝试的内容。data.currentDateTime的类型为MySqlDateTime

数据库中的预期结果是正确的datetime,但实际值是0000-00-00 00:00:00

代码语言:javascript
复制
    // 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类:

代码语言:javascript
复制
    public class MyData
    {
        public int id { get; set; }
        public MySqlDateTime currentDateTime { get; set; }
        // Other fields

        public MyData()
        {
            // Empty constructor
        }
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-24 14:29:08

您遇到的是MySQL bug 91199的变体。

使用默认SQL mode,MySQL服务器将拒绝连接器/网络使用Incorrect datetime value错误序列化的不正确MySqlDateTime

但是,如果您的MySQL服务器没有启用NO_ZERO_DATEstrict mode,则尝试插入MySqlDateTime将“成功”,但插入的值将为0000-00-00 00:00:00

由于bug 91119被错误地作为副本关闭,这可能不太可能很快得到修复。作为一种变通办法,您可以考虑切换到MySqlConnector,这是连接器/网络的一种开源软件替代方案,可以修复此问题(以及许多其他错误)。

若要使用MySql.Data解决此问题,请添加基础DateTime作为参数值,而不是MySqlDateTime对象:

代码语言:javascript
复制
cmd.Parameters.AddWithValue("currentDateTime", data.currentDateTime.GetDateTime());

请注意,如果MySqlDateTime不能转换为DateTime,则会抛出MySqlConversionException;如果在代码中可能发生这种情况,则需要测试data.currentDateTime.IsValidDateTime,如果是false,则执行其他操作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51489520

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档