| 

.NET C# Java Javascript Exception

1
Hallo Leute,

ich habe ein Entityobjekt, welches unter anderem eine Eigenschaft vom Type DateTime hat.
Nun bin ich auf folgendes Problem beim Vergleich zweier Datumswerte gestossen:

MyData myItem =new MyData() {Date = DateTime.Today};
dataContext.MyDataSet.Where(item => item.Date.Equals(myItem.Date));
Bei dieser Abfrage werden alle Einträge zurückgeliefert, die das gleiche Datum haben.

MyData myItem =new MyData() {Date = DateTime.Now};
dataContext.MyDataSet.Where(item => item.Date.Equals(myItem.Date));
Jetzt werden keine Einträge mehr gefunden, auch wenn sie den exakt gleichen Date-Wert (inkl. Zeit) haben.

Also, sobald die Uhrzeit im Date-Wert mit abgelegt ist, liefert die Abfrage auch bei identischen Werten immer FALSE.

Wo liegt hier der Fehler, was muss ich tun um auch Datumswerte mit Uhrzeit korrekt heraussuchen zu können?

Nachtrag:
Wenn ich vor der Where-Abfrage die Ergebnismenge aus dem DataContext herauslöse,
z. Bsp. durch .ToList():
dataContext.MyDataSet.ToList().Where(item => item.Date.Equals(myItem.Date))
Funktioniert die Abfrage völlig korrekt.

Also scheint es so, als wenn die Abfrage, die an die DB geschickt wird, falsch ist.

Vielen Dank für Eure Hilfe
Carsten
News:
01.09.2015
ille6 25 5
1 Antwort
0
Möglicherweise hat dies mit der unterschiedlichen Genauigkeit der beiden Datentypen zu tun. Der SQL datetime Datentyp hat eine Genauigkeit von ca. 0,003 Sekunden [1], bei .net ist die Genauigkeit 0.0000001 Sekunden ("ticks")[2].

[1]: https://msdn.microsoft.com/de-de/library/ms187819(v=sql.120).aspx
[2]: https://msdn.microsoft.com/en-us/library/z2xf7zzk(v=vs.110).aspx
02.09.2015
Roland Bär 338 6

Stelle deine .net-Frage jetzt!