我正在使用DateTime
对象创建一个监控应用程序。原理是用户每次启动特定的应用程序时,当前的日期和时间都会保存在数据库中。然后,在监控应用程序中,我从DB获取此日期字段并显示它。
当我今天通过测试时,我试着启动应用程序:DateTime.Now
is stored (即,在法国文化中,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;
}
我确信问题出在存储过程中,因为在Date字段中使用Toad show me 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日期有什么特殊的格式吗?
我碰到了this StackOverflow question,并尝试了所提出的解决方案,它也不起作用
有什么想法吗?
发布于 2011-04-22 23:26:03
DB列应该是DateTime,而不是Date。看看Docs。
关于日期:
当您只需要日期值而不需要时间部分时,可以使用DATE类型。MySQL以'YYYY-MM-DD‘格式检索和显示日期值。支持的范围是'1000-01-01‘到'9999-12-31’。
关于DATETIME:
当您需要同时包含日期和时间信息的值时,使用DATETIME类型。MySQL以'YYYY-MM-DD HH:MM:SS‘格式检索和显示日期时间值。支持的范围是'1000-01-01 00:00:00‘到'9999-12-31 23:59:59’。
获取像dd/mm/yyyy 00:00:00这样的日期返回值是有误导性的,它只是被工具格式化为默认的日期/日期时间格式。您真正需要的是将DB列设置为DateTime。
发布于 2011-04-22 23:34:26
检查DataBase中的数据类型,在我看来您的字段是日期类型,因此
https://stackoverflow.com/questions/5756892
复制相似问题