从c#到MySQL的日期时间:不完整的存储

本文关键字:存储 日期 MySQL 时间 | 更新日期: 2023-09-27 17:52:42

我正在使用DateTime对象来创建监视应用程序。原理是,每次用户启动特定的应用程序时,当前日期和时间将保存在DB中。然后在监控应用程序中,我从DB中获取这个日期字段并显示它。

当我今天通过测试时,我尝试启动应用程序:DateTime.Now被存储(即,在法国文化中,22/04/11 17:09:50)。当我启动监控应用程序时,我从数据库中得到的是22/04/11 00:00:00有什么原因导致没有节省准确的时间吗?

DB中的列当然是Date列。

一些代码:

存储日期:

                command = new MySqlCommand(_updateDateCommand, connection);
                command.Parameters.AddWithValue("?Template", app);
                command.Parameters.AddWithValue("?Date", DateTime.Now);
                command.Parameters.AddWithValue("?Id", u.Id);

                if (command.ExecuteNonQuery() != 0) return true;

检索数据:

                object date = reader.GetValue(4);
                if (date == System.DBNull.Value)
                {
                    tempUserApp.DateLastUsed = DateTime.MinValue;
                }
                else
                {
                    tempUserApp.DateLastUsed = (DateTime)date;
                }

我确信问题来自存储过程,因为使用诸如Toad之类的工具可视化数据会在Date字段中显示22/04/11 00:00:00

更新命令:

private readonly string _updateDateCommand =
            "UPDATE userapplications " +
            "JOIN template t ON t.Name = ?Template " +
            "SET DateUsed=?Date  WHERE `User Id`=?Id AND `Template Id`=t.Id";

MySQL日期有什么特殊的格式吗?

我碰到了这个StackOverflow问题并尝试了提出的解决方案,它也不起作用

任何想法?

从c#到MySQL的日期时间:不完整的存储

数据库列应该是DateTime,而不是Date。看看医生们。

关于日期:

DATE类型在需要时使用只有日期值,没有时间值部分。MySQL检索和显示DATE格式为"YYYY-MM-DD"。支持的范围是‘1000-01-01’到‘9999-12-31’。

对DATETIME:

DATETIME类型用于需要同时包含日期和时间信息。MySQL检索和中显示DATETIME值'YYYY-MM-DD HH:MM:SS'格式。的支持范围为"1000-01-01"00:00:00' to ' 99999-12-31 23:59:59'.

获取日期返回如dd/mm/yyyy 00:00:00是误导,它只是被格式化为默认的日期/日期时间格式的工具。您真正需要的是将DB列设置为DateTime。

检查数据库中的数据类型,在我看来,您的字段是日期类型,所以