| 

.NET C# Java Javascript Exception

0
Wenn man in der Datenbank Datum und Uhrzeit in UTC-Zeit abspeichert und nicht in lokaler Zeit, wie kann man dann nach lokaler Zeit abfragen machen? Ich habe folgendes (vereinfachtes Problem):

class Tabelle { string Name; DateTime Uhrzeit; }

...

var anzahlProTag = from x in tabellenzeilen
group x by x. Uhrzeit.Date into g
select new { Datum = g.Key, Anzahl = g.Count() };

Die Gruppierung verwendet jetzt aber natürlich die auf dem Server gespeicherten Uhrzeiten in UTC und ich erhalte falsche Ergebnisse.
News:
02.09.2009
ber.ger 1 1 1
3 Antworten
1
Du kannst in .NET die
.ToLocalTime()

Methode des DateTime anwenden in Deiner Gruppierung.
Oder alternativ bereits im SqlServer TSQL falls gewünscht die DATETIME Spalte errechnen mit

DeineDATETIMESPalte + GETDATE() - GETUTCDATE()
02.09.2009
Mischa 345 1 3
Mischa 345 1 3
ToLocalTime wird von LINQ nicht verstanden. glaube nicht, dass das geht. " + GETDATE() - GETUTCDATE()" gibt im winter 2h zurück und im sommer 1h. geht auch nicht...
jor 02.09.2009
.ToLocalTime() gibt es erst ab .net 3.5 !
Verstehen sollte Linq das schon:
... group x by x. Uhrzeit.Date.ToLocalTime() into g ...
ralf.w. 24.02.2011
1
wieso sollte GETUTCDATE() nicht gehen? du WILLST ja die lokalzeit? und die weicht in vielen europäischen ländern im winter nun mal um eine und im sommer um 2 stunden von der UTC ab!?
07.09.2009
stiV 66 1 2
0
wieso GetUtcDate() nicht geht? - weil es immer von der Jetzt-aktuellen-Zeit abhängt - nicht von der im Datenfeld gespeicherten Zeit. Sprich wenn man in der Winterzeit eine im Sommer gespeicherte Zeit zurückrechnet, erhält man das falsche Ergebnis
12.11.2009

Stelle deine .net-Frage jetzt!