我在查看DATETIME
类型列的毫秒组件时遇到问题。
定义表的代码是:
string command = string.Format("CREATE TABLE {0}(EventDateTime DATETIME, layer3Id VARCHAR(35), EventType VARCHAR(55), Protocol VARCHAR(30), MessageBody VARCHAR(MAX), MessageContent VARCHAR(MAX))", tableName);
SendSqlCommand(command);
填充该行的代码是:
string insertCommand = string.Format(@"INSERT INTO {0} VALUES (@p1, @p2, @p3, @p4, @p5, @p6)", tablename);
_con.Open();
using (SqlCommand cmd = new SqlCommand(insertCommand, _con))
{
cmd.Parameters.AddWithValue("@p1", record.EventDateTime);
cmd.Parameters.AddWithValue("@p2", record.layer3Id);
cmd.Parameters.AddWithValue("@p3", record.EventType);
cmd.Parameters.AddWithValue("@p4", record.Protocol);
cmd.Parameters.AddWithValue("@p5", record.MessageBody);
cmd.Parameters.AddWithValue("@p6", record.MessageContent);
cmd.ExecuteNonQuery();
}
其中EventDateTime
字符串值类似于2016/01/09 16:10:08.500
当我在桌面上运行查询时,我会回复:09/01/2016 16:10:08
没有毫秒。我不知道这些值是否会进入数据库,或者是否使用了错误的类型,或者查询是否没有正确响应:
TestTable.Take (100)
答案 0 :(得分:1)
因此,假设您在数据库中拥有这些值:
通过运行纯sql语句,您应该能够以您预期的格式检索日期时间,以毫秒为单位
在您的C#中,您可以控制格式,这是一个示例:
var res = db.MyTables.Take(100);
foreach(var date in res)
{
Console.WriteLine(Convert.ToDateTime(date.EventDateTime).ToString("dd/MM/yyyy hh:mm:ss.fff"));
}
这是输出:
答案 1 :(得分:0)
毫秒。你只是不显示它们。
因此,当您从数据库中读取时间时,需要将其格式化为输出,如下所示:
string s;
s.Format("{0:yyy-MM-dd hh:mm:ss.fff}", record.EventDateTime)
现在您可以显示变量s