Datetime BETWEEN-Anweisung funktioniert nicht in SQL Server

8

Ich habe folgende Abfrage,

%Vor%

Diese Abfrage gibt kein Ergebnis zurück, aber die folgende Abfrage gibt das Ergebnis zurück,

%Vor%

Warum gibt die erste Abfrage kein Ergebnis zurück? Wenn ich einen Fehler gemacht habe, korrigiere mich bitte.

    
Able Alias 18.10.2013, 14:09
quelle

5 Antworten

29

Hast du mal deine Daten? BETWEEN ist inklusive, aber wenn Sie 2013-10-18 zu einem Datum konvertieren, wird es 2013-10-18 00: 00: 000.00. Alles, was nach der ersten Sekunde des 18. geloggt wird, wird nicht mit BETWEEN angezeigt, außer Sie fügen einen Zeitwert hinzu.

Versuchen Sie:

%Vor%

Wenn Sie den ganzen Tag des 18. suchen möchten.

SQL DATETIME Felder haben Millisekunden. Also habe ich 999 zum Feld hinzugefügt.

    
Skerkles 18.10.2013, 14:30
quelle
5

Gibt die zweite Abfrage irgendwelche Ergebnisse vom 17. oder nur vom 18. zurück?

Die erste Abfrage gibt nur Ergebnisse vom 17. oder Mitternacht am 18. zurück.

Versuchen Sie es stattdessen

%Vor%     
podiluska 18.10.2013 14:15
quelle
2

Sie haben keinen Fehler in einer Ihrer Abfragen. Meine Vermutung ist folgende:

  • Es gibt keine Datensätze zwischen 2013-10-17 'und' 2013-10-18 '
  • Die Datensätze, die die zweite Abfrage zurückgibt, existieren nach '2013-10-18'
apomene 18.10.2013 14:15
quelle
0

Sie müssen das Datumsfeld in varchar umwandeln, um die Zeit auszublenden, und dann zurück in datetime konvertieren, wodurch die Zeit auf '00: 00: 00.000 'zurückgesetzt wird.

%Vor%     
NetIntel 22.08.2014 14:57
quelle
0

Von Sql Server 2008 haben Sie "Datum" Format.

Sie können also

verwenden %Vor%

Ссылка

    
maurox 06.09.2017 14:28
quelle