加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – LINQ to Entities DateTime不一致

发布时间:2020-12-16 00:18:22 所属栏目:百科 来源:网络整理
导读:我有以下C#代码创建一个DateTime,将其输入到表中,然后查询该表: DateTime date = DateTime.Now;DateTest newRecord = new DateTest { dateColumn = date};db.DateTest.AddObject(newRecord);db.SaveChanges();IQueryableDateTest records = from d in db.Da
我有以下C#代码创建一个DateTime,将其输入到表中,然后查询该表:

DateTime date = DateTime.Now;

DateTest newRecord = new DateTest {
    dateColumn = date
};

db.DateTest.AddObject(newRecord);
db.SaveChanges();

IQueryable<DateTest> records =
    from d in db.DateTest
    select d;

如果我此时破坏代码,并查看调试器中的对象,我得到日期对象:

Date    {11/22/2011 12:00:00 AM}    System.DateTime
Day 22  int
DayOfWeek   Tuesday System.DayOfWeek
DayOfYear   326 int
Hour    8   int
Kind    Local   System.DateTimeKind
Millisecond 345 int
Minute  59  int
Month   11  int
Second  33  int
Ticks   634575491733450602  long
TimeOfDay   {08:59:33.3450602}  System.TimeSpan
Year    2011    int

我从表中检索到的记录得到了这个:

Date    {11/22/2011 12:00:00 AM}    System.DateTime
Day 22  int
DayOfWeek   Tuesday System.DayOfWeek
DayOfYear   326 int
Hour    8   int
Kind    Unspecified System.DateTimeKind
Millisecond 347 int
Minute  59  int
Month   11  int
Second  33  int
Ticks   634575491733470000  long
TimeOfDay   {08:59:33.3470000}  System.TimeSpan
Year    2011    int

正如你所看到的,它们会在几毫秒内完成.

任何人都可以解释为什么这样,以及我如何解决它?我需要能够查询与内存中的DateTime对象完全匹配的记录,但是这种行为导致我的查询空手而归.

解决方法

SQL Server中DateTime字段的分辨率与DateTime .NET类的分辨率不同.

来自MSDN – datetime (Transact-SQL):

Accuracy: Rounded to increments of .000,.003,or .007 seconds

因此,在您的情况下,毫秒会向上舍入到.007,给出.3470000而不是.3450602.

DateTime2 SQL Server数据类型的分辨率为100纳秒,与.NET类似,因此可能是合适的替代品.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读