So vergleichen Sie sql datetime und c # datetime

Dies wurde aus meiner früheren Frage geboren

Ich habe ein DateTime in c #.

Dann wird dieser Wert in die database eingefügt.

Danach wählen Sie diesen Wert und vergleichen, dass das date ist das gleiche wie es war am Anfang.

Was ist der beste path, dies zu tun? Da SQL datetime verschiedene Ticks hat, ist DateTime aus dem ersten Schritt nicht das gleiche wie SQL DateTime (Zeile ["MyDate"])

Wie kann man sie vergleichen?

Sie können die SqlDateTime Struktur verwenden.

 DateTime now = DateTime.Now; SqlDateTime sqlNow = new SqlDateTime(now); bool equal = now == sqlNow.Value; // false 

Also, wenn Sie ein DateTime und wissen wollen, ob es gleich einer DateTime :

 Assert.Equal(dbEndTime, new SqlDateTime(endTime).Value); // true 

SqlDateTime :

Stellt die dates- und timedaten im Wert vom 1. Januar 1753 bis zum 31. Dezember 9999 mit einer Genauigkeit von 3,33 Millisekunden dar, die in einer database gespeichert oder abgerufen werden sollen. Die SqlDateTime-Struktur hat eine andere zugrundeliegende datastruktur aus dem entsprechenden .NET Framework-Typ, DateTime, die jederzeit zwischen 12:00:00 AM 1/1/0001 und 11:59:59 PM 12/31/9999 repräsentieren kann die Genauigkeit von 100 Nanosekunden. SqlDateTime speichert tatsächlich die relative Differenz zu 00:00:00 AM 1/1/1900. Daher wird eine Umstellung von "00:00:00 AM 1/1/1900" auf eine Ganzzahl 0 zurückgeben.

Subtrahieren Sie eine von der anderen und überprüfen Sie die Zecken der resultierenden TimeSpan, um innerhalb akzeptabler Grenzen für den Unterschied in der Ticklänge zu sein

Wenn du den Millisekunden-Unterschied ignorierst, kannst du das versuchen

 Select * from MyTable DATEADD(ms, -DATEPART(ms, endTime), endTime) = @value