我正在使用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问题并尝试了提出的解决方案,它也不起作用
任何想法?
数据库列应该是DateTime,而不是Date。看看医生们。
关于日期:对DATETIME:DATE类型在需要时使用只有日期值,没有时间值部分。MySQL检索和显示DATE格式为"YYYY-MM-DD"。支持的范围是‘1000-01-01’到‘9999-12-31’。
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。
检查数据库中的数据类型,在我看来,您的字段是日期类型,所以