EntityFunction.TruncateTime nicht in meiner Abfrage
Bin ich mit Linq to Entity Framework zur Abfrage einiger Informationen. Ich bin versucht, entityfunction.truncatetime und es scheint nicht zu funktionieren, wie erwartet. hier ist mein Beispiel-Abfrage
From d In Request
Where d.Requestor= "XXXX" And d.ProcessedFlag = "N"
Select d.RequestID, RequestReason = d.RequestReason.ItemValue, RequestType = d.RequestType.ItemValue, RequestedDate = EntityFunctions.TruncateTime(d.RequestedMoveDate)
Den requesteddate scheint nicht zu kürzen die Zeit und ich bin noch immer der Datum und Uhrzeit angezeigt.
Bin ich hier etwas fehlt?
- Was meinst du mit "scheint nicht zu kürzen die Zeit und ich bin noch immer der Datum und Uhrzeit"? DateTime-Typ immer die Zeit hat, Teil. Ist nicht die Zeit Teil nicht auf 00:00:00 ?
- Mein Ziel war es, zu ignorieren, die mal Teil und retreive nur den Date-Teil von DB-datetime-coulumn. Also in meinem Verständnis die EntityFunctions.TruncateTime würde das tun.
- ...und dann wäre es zu laden, um ein DateTime-Objekt, das speichert immer einige Zeit, da es nicht DateWithoutTime geben Sie in der .NET Framework
- okay, dann wissen Sie, wie bekomme ich nur den date-Teil aus dem DATETIME-Feld der Datenbank mit LINQ und EF? Aber ich fand die Lösung für das Problem, aber wenn es einen Weg gibt, dies zu erreichen, dann wird Es nützlich sein in der Zukunft.
- Nachdem Sie abschneiden, wie Sie es getan hat (nur stellen Sie sicher, die Zeit ist wirklich 00:00:00 - andernfalls bedeutet es, dass truncate nicht wirklich funktionieren), nur die Typ. Wenn Sie möchten, drucken Sie Sie nutzen können .ToString("d") (hier sind andere Formate: msdn.microsoft.com/en-us/library/zdtaw1bw.aspx). Es ist schwer zu geben, Sie mehr Tipps, da ich nicht weiß, was Sie tun möchten, mit dem Datum, nachdem Sie es aus der db
Du musst angemeldet sein, um einen Kommentar abzugeben.
In .NET, die DateTime-Klasse stellt tatsächlich sowohl ein Datum und eine Uhrzeit. Intern werden diese gespeichert ist, als einen numerischen Wert, dargestellt durch die Anzahl der 100-Nanosekunden - "ticks" seit Mitternacht 1. Januar 1001 AD. Diese Zahl wird "umgewandelt", wenn es angezeigt wird (entweder in der Ausgabe oder in einem debugger). Diese Umwandlung erfolgt über einen format-string.
Selbst wenn Sie abgeschnitten ein DateTime-Zeit Teil, es hat noch Zeit... es ist gerade 00:00:00, und wenn Sie nicht wollen, um zu sehen, dass die Zeit, die Sie brauchen, um Ihre format-string zu konvertieren, dass.
So, wenn Sie so etwas tun:
DateTime.Now.Date
zeigt es `10/15/2012 00:00:00" wenn Sie den Standard-Datum Konvertierung string (oder was auch immer ist das Standard-format für Ihre Kultur).Wenn Sie wollen, um nur das Datum anzuzeigen portion, dann müssen Sie etwas tun, wie
myDate.ToShortDateString()
odermyDate.ToString("d")
.EntityFunctions ist eine Reihe von tools entwickelt, um verwendet werden, in Linq to Entities-Abfragen, da dies DateTime-Formatierung ist in der Regel nicht erlaubt in einer Abfrage.
Zum Beispiel, dieser code funktioniert nicht:
Haben Sie es zu tun mögen dieses:
Dieser generiert dann den richtigen SQL zu tun Datum Vergleiche in SQL-code. Dies ist, was die EntityFunctions bestimmt sind, nicht abgeschnitten Daten im select-Teil (obwohl es funktioniert). Aber, obwohl das Datum ist abgeschnitten, es wird noch eine Zeit-Komponente, wird es nur 00:00:00, und Sie müssen ein Datum im format string zu präsentieren, um Ihre Benutzer in der Art und Weise, die Sie wollen.
kann Sie verwenden ToShortDateString() wie unten?
In deinem Fall versuchen, diese