[英]Why EF trim milliseconds in Time and DateTime values
我有从 SQL Server 2008 R2 Express 生成的 ADO.NET 实体数据模型,在我的表中我有时间或日期时间值。 在数据网格中,此字段以毫秒为单位正确显示,但在使用我的 ObjectSet<> 的 LINQ 查询中,我丢失了毫秒。 为什么?
var query = from data in ctx.Data
join member in ctx.Members
on data.MemberId equals member.MemberId
where member.StepId == (int)RepStepCombo.SelectedValue
orderby data.Time ascending
select new {
data.LaneNum,
member.MemberName,
data.Time,
mill = data.Time.Millisecond
};
StreamWriter sw = new StreamWriter("text.txt");
foreach (var data in query)
{
sw.WriteLine(data.LaneNum + " " +
data.MemberName + " " + " millisec: " +
data.Time.ToString("HH:mm:ss.fff") + " " +
data.mill);
}
sw.Close();
sw.Dispose();
你确定 Time 是 DateTime 而不是 SmallDateTime 吗? SmallDateTime 具有较小的分辨率并且不是毫秒精确。
我使用 Sql2008 和 EF 从日期时间字段获取毫秒没有问题:
var members = from s in myEntites.TableName
select s;
foreach (TableEntry entry in members)
{
String time = ((DateTime)entry.date).ToString("HH:mm:ss.fff");
Console.WriteLine(time);
}
对于时间,转换为 TimeSpan:
var members = from s in myEntites.TableName
where s.myTime != null
select s;
foreach (Entity myEntity in members)
{
String time = ((TimeSpan)myEntity.myTime).Milliseconds.ToString();
}
“在我的机器上工作!” :)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.