T-SQL Zwischen Datumsangaben Verwirrung

Ich arbeite mit T-SQL in SQL Server 2000 und ich habe eine Tabelle TRANSACTIONS hat eine Datum-Spalte TRANDATE definiert, wie DateTime, unter vielen anderen Spalten sind nicht relevant für diese Frage..

Die Tabelle wird aufgefüllt, mit den Transaktionen über zahlreiche Jahre. Ich lief in code, das testen, das hat mich verwirrt. Es ist eine einfache SELECT wie diese:

SELECT TRANDATE, RECEIPTNUMBER FROM TRANSACTIONS WHERE TRANDATE BETWEEN '12/01/2010' and '12/31/2010' ORDER BY TRANDATE

und seine-nicht wieder zwei Reihen von Daten, die ich kenne, sind in dieser Tabelle.

Mit der Aussage oben, die Letzte Zeile seiner Rückkehr, im Auftrag, hat eine TRANDATE von:
2010-12-31 00:00:00.000

Wenn ich ändern Sie die Anweisung wie unten, bekomme ich die beiden zusätzlichen Zeilen für Dezember 2010 sind in dieser Tabelle:

SELECT TRANDATE, RECEIPTNUMBER FROM TRANSACTIONS WHERE TRANDATE BETWEEN '12/01/2010 00:00:00' and '12/31/2010 23:59:59' ORDER BY TRANDATE

Habe ich versucht heraus zu finden, warum die BETWEEN Betreiber nicht enthalten ALLE Zeilen für die 24 Stunden in 12/31/2010 bei der Nutzung der ersten SELECT vor. Und wieso braucht es die ausdrückliche Stunden Hinzugefügt, um die SELECT Aussage als in die zweite, geänderte Anweisung, um es zu bekommen, ziehen Sie die richtige Anzahl von Zeilen aus?

Ist es aufgrund der Art und Weise TRANDATE ist definiert als "DATETIME"?

Basierend auf diesem Ergebnis, ich denke, dass werde müssen gehen durch alle diese alt-Codes, da diese BETWEEN Betreiber übersät sind, während das alte system, und es scheint, wie die nicht ziehen Sie alle Daten richtig. Ich wollte nur eine Klarstellung einige Leute ersten. Danke!

  • '12/31/2010 23:59:59' noch vermissen würde mal zwischen 12/31/2010 23:59:59 und 12/31/2010 23:59:59:997 nicht verwenden between für datetimes verwenden >= and < statt.
  • Danke. Und danke an alle anderen. Vor allem @GSerg, der hat im Grunde die Antwort auf meine Frage unten. Ich kann upvote, so scheint es, bis ich 15 Punkte, so dass ist, warum Sie alle nicht sehen, jeder (von mir). Aber jetzt verstehe ich die Basis auf alle, die Antworten. Danke. Ich habe einige Arbeit zu tun! 🙂
InformationsquelleAutor ONDEV | 2011-03-25
Schreibe einen Kommentar