Laden...

DateTime nach MS SQL Server - ohne Sekunden

Erstellt von exaveal vor 13 Jahren Letzter Beitrag vor 13 Jahren 7.124 Views
E
exaveal Themenstarter:in
96 Beiträge seit 2010
vor 13 Jahren
DateTime nach MS SQL Server - ohne Sekunden

Hallo Gemeinde!

Ich habe ein Problem mit der Übergabe einer DateTime aus einer C# Anwendung via LINQ in eine MS SQL Datenbank.


            messages m = new messages
            {
                message = Message,
                user_id = myUser.id,
                timestamp = new DateTime(DateTime.Now.Ticks);
                to_usergroup_id = usergroup_id
            };

Die Spalte "timestamp" hat den Datentyp "datetime" in der Datenbank. Seltsamerweise wird aber das Datum nur bis zur Minute gespeichert. Die Sekunden und alles darüber hinaus fällt weg.
Wo liegt denn da der Fehler? Es wird doch mehr oder weniger nur eine Long-zahl gespeichert, oder sehe ich das falsch?

3.430 Beiträge seit 2007
vor 13 Jahren

Hallo,

normalerweise sollte das kein Problem sein.
Ich verwende Linq2Sql zwar nicht, aber mit dem EF funktioniert das ohne Probleme.

Hast du schon mal versucht einfach **:::

Gruß
Michael

F
10.010 Beiträge seit 2004
vor 13 Jahren

Und um Verwirrungen gleich zu vermeiden, TimeStamp ist auch ein Sql Datentyp, man sollte deshalb eine Spalte nicht wirklich so nennen.

E
exaveal Themenstarter:in
96 Beiträge seit 2010
vor 13 Jahren

Hast du schon mal versucht einfach **:::

Ja, aber DateTime.Now gibt einen Long wert zurueck. Es wird aber der Datentyp DateTime verlangt.

3.511 Beiträge seit 2005
vor 13 Jahren

DateTime.Now gibt ein DateTime zurück, und kein long.

"Jedes Ding hat drei Seiten, eine positive, eine negative und eine komische." (Karl Valentin)

E
exaveal Themenstarter:in
96 Beiträge seit 2010
vor 13 Jahren

Okay sry, ich habe DateTime.Now.Ticks verwendet.

DateTime.Now kommt auf das gleiche Ergebnis wie new DateTime(DateTime.Now.Ticks):
In der SQL Datenbank wird nur das Datum bis zur Minute gespeichert. Sekunden (+ noch kleinere Einheiten) fallen weg.

AH, ich dreh durch. Finde auch im Netz einfach nichts dazu.

W
955 Beiträge seit 2010
vor 13 Jahren

Hi,

schau doch mal im sql profiler rein ob am Client oder am Server liegt.

W
16 Beiträge seit 2010
vor 13 Jahren

Hi

probiers mal so

kurzes Datumsformat


string.Format("{0:d}",DateTime.Now) 	

dann steht immer die Uhrzeit auf 00:00:00.

Gruß

Bernd

X
1.177 Beiträge seit 2006
vor 13 Jahren

huhu,

wie überprüfst Du was in der DB steht? (nicht dass es nur ein Darstellungsproblem ist)

Bei uns funktioniert das immer reibungslos, auch der SQL-Server kann "Sekunden". Beim 2008er kannst Du alternativ den DateTime2-Datentyp verwenden. Der ist in der genauigkeit dem DateTime von .net angepasst.

😃

Xynratron

Herr, schmeiss Hirn vom Himmel - Autsch!

Die Erfahrung zeigt immer wieder, dass viele Probleme sich in Luft auslösen, wenn man sich den nötigen Abstand bzw. Schlaf gönnt.

E
exaveal Themenstarter:in
96 Beiträge seit 2010
vor 13 Jahren

Also habe jetzt alles Schritt für Schritt mit dem Debugger verfolgt. Das war garnicht so einfach, denn er hat immer die Entitätsklassen der .dbml Datei übersprungen obwohl ich mit F11 weitergegangen bin.

Mein Problem war mal (wieder) ziemlich bescheuert: Ich hab zwar den Datentyp in der Datenbank geändert, mir aber die .dbmo nicht neu erstellen lassen. In der war noch der Datentyp SmalDateTime gespeichert.

Schande über mein Haupt. Das hat mich jetzt wieder so unendlich viel Zeit gekostet die ich nicht habe -.-

Abrer vielen Dank für das Rege Interesse!