SQL Datum Vergleichen, nur mit Datum-nicht die Zeit

Ursprünglich wurde Sie gehen, um eine Frage zu, wie diese umzusetzen ist, denn ich steckte in einem bestimmten Teil, aber ich bin jetzt neugierig, warum dies geschah in den ersten Platz. Ich brauchte, um zu vergleichen, nur die Daten nicht die Zeit, das wäre kein problem gewesen, wenn die Zeiten nicht unterscheiden. Der code unten zeigt die Abfrage, die ich ursprünglich versucht

SELECT *
FROM Employee e
inner join OT_Hours o on o.Emp_ID=e.Emp_ID
inner join Position p on p.Position_ID=e.Position_ID
inner join Signup_Sheet s on s.Employee_ID=e.Emp_ID
WHERE e.Eligible_OT=1 and s.Day_Shift = 1 
and p.Position_Name = 'Controller' 
and Convert(Varchar(20),s.Date,101) = '07/26/2010'
and Convert(Varchar(20),o.Date,101) <='07/26/2010'
and Convert(Varchar(20),o.Date,101) > '07/26/2009'
and o.Quantity NOT IN(0.3) order by o.Date DESC

Ich würde kein Ergebnis, wenn ich lief, dass die Abfrage entfernt, aber wenn ich die vorletzte Zeile würde es wieder 12 Ergebnisse (<=) und wenn ich entfernt die 3. Letzte Zeile behielt aber den vorletzten würde es wieder 6 Ergebnisse (>). Nach der Durchsicht der Daten konnte ich sehen, dass 4 von diesen Ergebnissen sollten die zurückgegeben worden sind. Nun der seltsame Teil. Unten ist der code, den ich momentan verwende.

SELECT DISTINCT o.Date, e.Emp_ID as Emp_ID, e.First_Name+ ' ' +e.Last_Name as Name, o.Quantity as Sum
FROM Employee e
left join OT_Hours o on o.Emp_ID=e.Emp_ID
left join Position p on p.Position_ID=e.Position_ID
left join Signup_Sheet s on s.Employee_ID=e.Emp_ID
WHERE e.Eligible_OT=1 and s.Day_Shift = 1 
and p.Position_Name = 'Controller' 
and Convert(Varchar(20),s.Date,101) = '07/26/2010'
and o.Date between '07/26/2009' and '07/26/2010'
and o.Quantity NOT IN(0.3) order by o.Date DESC

Diese Abfrage gibt Ergebnisse zurück, aber ich habe auch getestet, wie ich, der andere, wenn die o.Bisher war über und unter dem Datum angegeben. Wenn das Datum <= 16 Ergebnisse zurückgegeben wurden, wenn > 8 Ergebnisse zurückgegeben wurden. Die Letzte Abfrage ergab 6 Ergebnisse. Nun ist dies nicht eine Produktionsdatenbank ich bin gegen Abfragen und ich bin die einzige Hilfe, damit die Daten nicht ändern. Eine Erklärung, warum dies geschehen war? Ich nehme an, es hatte etwas zu tun mit dem umwandeln in varchar und es konnte nicht vergleichen, richtig, aber das erklärt nicht, warum ich 12 <=, 6 > und dann keine Ergebnisse in der Ende. Auch wenn jemand weiß, einen besseren Weg, um dies zu implementieren, lassen Sie es mich bitte wissen.

Dies schon gefragt wurde(in einer Weise) Überprüfen Sie die akzeptierte Antwort hier... stackoverflow.com/questions/2775/...

InformationsquelleAutor Gage | 2010-07-27

Schreibe einen Kommentar