2016-11-08 7 views
1

ziehen Ich bin eine einfache Abfrage ausgeführt wird, wo ich nach einem Datum zu filtern, ich versuche, so ...SQL Abfragen mit Daten - nicht korrekten Daten

Select * from tblPurchasedProducts 
WHERE PurchasedOn >= '11/04/2016' AND PurchasedOn <= '11/08/2016' 

Aber ich bin nicht in der Lage alle Ergebnisse zu sehen für den 08.11.2016. Ich kann nur alles vor dem 11.08.2016 sehen.

Das Datum wird in SQL SERVER als smalldatetime gespeichert. Ich bin mir wirklich nicht sicher, ob das etwas damit zu tun hat.

Ist die Zeit ein Problem in diesem Fall.

Ich bin verpflichtet, mit wie Datetime

EDIT die PurchasedOn Datum zu speichern:

@lamak WHERE PurchasedOn> = '20161104' AND PurchasedOn < = '20161108'

Antwort

4

Sie müssen sich mit Ihrer Bedingung vorsichtig sein. Wenn Sie <= '11/08/2016' verwenden, verwendet es die 00:00:00 Zeit, deshalb erhalten Sie keine Ergebnisse. Verwenden Sie:

SELECT * 
FROM tblPurchasedProducts 
WHERE PurchasedOn >= '20161104' AND PurchasedOn < '20161109'; 
+0

dies funktioniert leider nicht @Lamak – BobSki

+1

@Bobski versuchen es noch einmal. Es ist die richtige Antwort und besser als die, die Sie kommentiert haben, die für Sie arbeitete. –

+0

@JoelCoehoorn siehe EDIT - das ist meine WHERE-Anweisung, mit CAST bekomme ich 4 Ergebnisse. damit bekomme ich nur 3 (den einen Eintrag am 08.11.2016 auslassen) – BobSki

0

Daten in SQL werden formatiert YYYY MM DD, so würden Sie schreiben "2016/04/11"

Sofern Sie nicht überschreiben, aber Sie müssen das Datumsformat angeben.

Versuchen:

Select * from tblPurchasedProducts 
    WHERE PurchasedOn BETWEEN '2016-11-04' AND '2016-11-08' 
Verwandte Themen