SQL Server: vergleichen datetime-Tag mit GETDATE()
Ich habe eine gespeicherte Prozedur, die Holen soll alle Datensätze mit einem Datum gleich dem aktuellen Datum oder in der Zukunft.
Die Daten sind gespeichert in der Spalte targetDate und formatiert als datetime.
Meine entsprechende WHERE-Klausel ist die folgende:
WHERE A.targetDate >= GETDATE()
Im Allgemeinen meine gespeicherten Prozedur funktioniert einwandfrei, mein problem ist nur, wenn die targetDate entspricht dem aktuellen Datum, da alle Daten gespeichert werden, wie folgt, d.h. mit der Zeit auf null gesetzt:
2014-02-22 00:00:00.000
Wie kann ich meine WHERE-Klausel so, dass es nur der Auffassung, das Datum ignoriert aber die Zeit mit gespeichert, damit bekomme ich alle Datensätze mit dem aktuellen Datum, auch wenn die Zeit schon abgelaufen ?
Vielen Dank für jede Hilfe mit diesem, Tim.
- Welche version von sql server haben Sie?
- Ich habe SQL Server version 2008
Du musst angemeldet sein, um einen Kommentar abzugeben.
Änderung:
Bearbeiten - weil targetdate enthält auch die Zeit, ja, format sowohl wie diese:
Bearbeiten gegebenen Kommentare re: Leistung, kann versuchen wollen:
Letzte änderung sollten Sie das gleiche Ergebnis und nutzen von Indizes, die auf targetdate
targetDate
zudate
.>= a_date
).Den folgenden sollten Sie das aktuelle Datum ohne Uhrzeit:
Sollte dies Ihre Letzte Zeile:
SELECT
einen syntax-Fehler. Es gibt keine Notwendigkeit für die Unterabfrage so entfernen Sie dieSELECT
. Und ändernATEDIFF
fürDATEDIFF
😉