So fügen Sie den aktuellen Tag in Linq to SQL hinzu

Ich schreibe diesen Code. Hier wird sowohl dt als auch someint in die Funktion eingegeben. Die Spalte Exp ist eine T-SQL-Datumsspalte, die als DateTime über Linq geliefert wird.

return (from a in dataContext.TableOfA
       where a.name == "Test" &&
       a.Exp.Value.AddDays(Convert.ToDouble(Someint)) >= new DateTimeOffset(dt)
       select a).First();

In C # können Sie einer Datumszeit einen doppelten Tag hinzufügen. Das heißt, Sie können 1,5 Tage hinzufügen. In T-SQL können Sie nur 1 Tag und dann 12 Stunden hinzufügen. Sie müssen für jeden Teil ein int hinzufügen. Wenn Linq AddDays in T-SQL übersetzt, werden meine Tage in Millisekunden konvertiert und diese hinzugefügt. Dies ermöglicht es, die Präzision zu geben, die das Doppelte für C # ergibt.

Hier ist die Unebenheit. Wenn dies zu SQL gelangt, erhalte ich den Fehler:

Der Datumsteil Millisekunde wird von der Datumsfunktion dateadd für den Datentyp date nicht unterstützt

Grundsätzlich können Sie einem Datum keine Millisekunden hinzufügen. Na kein Scherz. Aber wie bekomme ich etwas, das hier übersetzt wird? Ich möchte einem Datum int Tage hinzufügen. Wollen die nur das tun, um das Negative von ihnen zu dem anderen Kerl hinzuzufügen, mit dem ich vergleiche? Was ist, wenn ich beim Hinzufügen zu einer Spalte mit einer Spalte vergleichen wollte?

Update 1

Keith schrieb: Ein Befehl wie datepart (millisecond, 10000, myDate) wird in T-SQL seit mindestens SQL Server 2000 unterstützt. Dieser Fehler deutet darauf hin, dass die von Ihnen verwendete Datenbank den Millisekunden-Datumsteil nicht unterstützt, was mir seltsam erscheint .

Bitte beachten Sie, dass ich SQL Server 2008 verwende. Es wird vom Datentyp DATE nicht unterstützt. Es wird zu Datum und Uhrzeit unterstützt.

Antworten auf die Frage(9)

Ihre Antwort auf die Frage