Berechnung des Datumsunterschieds in der SQL-Abfrage

satyam11

Mitglied
Ich habe versucht, mit dieser Abfrage einen Datumsunterschied zu erstellen, aber ich weiß nicht, was dabei falsch läuft.

SQL:
SELECT ID, VoucherNo, DateRec, ProductID, Description, ClaimantCo, ClaimantName, City, Phone, DateReturn, ReqJob, WSIns, Remarks, Status, Part1, Part2, Part3, Part4, OtherWSCharges, FDCharges, P1Charges, P2Charges, P3Charges, P4Charges, DateJobBegun, DateJobDone, WSRemarks, TotChargesFromWS, DeliveryStatus, DateDelivered
FROM tblClaims
WHERE DateDiff(dd, DateReturn, GETDATE()) =3

Ich habe auf diese Seite verwiesen, die Sie sich ansehen können, aber ich weiß nicht, wo ich den Fehler mache. Was ich versuche, ist Aufzeichnungen darüber zu erhalten, welche drei Tage bis DateRetun im Vergleich zum heutigen Datum verbleiben. Ihre Hilfe wird geschätzt.
 
Was ich versuche, ist Aufzeichnungen darüber zu erhalten, welche drei Tage bis DateRetun im Vergleich zum heutigen Datum verbleiben.
Das habe ich jetzt nicht verstanden. Was genau willst Du haben? Und was genau geht nicht? Was bekommst Du bei der Abfrage, die Du gezeigt hast?

Generelle Hinweise:

1) Wenn Du bei so Ausdrücken Probleme hast, dann teste da deutlich mehr. Also wenn Du unsicher bist, ob der DATEDIFF Aufruf richtig ist: Dann mach den einfach einmal:
SELECT DISTINCT DateReturn, GETDATE(), DATEDIFF(day, DateReturn, GETDATE()) FROM tblClaims;

2) Deine Abfrage schaut ja, bei welchen Elementen DateReturn 3 Tage her ist. Diese Abfrage ist aber extrem schlecht, denn bei Dir muss nun wirklich bei jedem Datensatz das DateDiff aufgerufen werden und damit kann der SQL Server nicht seine Stärken nutzen.

Statt dessen solltest Du einmal aus dem GETDATE() das Zieldatum berechnen um dieses dann zu nutzen in einer Abfrage. Also etwas wie: WHERE DateReturn = DAYADD(day, -3, GETDATE())
Vorteil hier ist dann, dass der Server sehr gut bei dem DateReturn filtern kann. Es können ggf. Indices benutzt werden. Damit ist die Performance deutlich besser.
 

Zurück
Oben