2016-08-04 12 views
0

showdate ist ein Datetime-Feld - die folgende sql gibt alle Zeilen zurück, nicht nur die mit Datumsangaben später als 2016-08-31.MySQL-Datum größer als gibt alle Zeilen zurück

SELECT * FROM shows WHERE showdate > '2016-08-31' 

ich eine Abhilfe tat durch ein unixdate Feld erzeugt wird, und machen Sie die Abfrage wie folgt aus:

SELECT * FROM shows WHERE udate >1472626800 

jedoch von dem, was ich gelesen habe, sollte die ehemalige arbeiten, und ich bin neugierig, warum es tut es nicht.

+5

Bitte fügen Sie eine Tabellenstruktur und möglich, ein paar Zeilen von Beispieldaten. –

+1

In einem anderen Kommentar zeigen Sie eine andere SQL-Abfrage mit zusätzlichen booleschen Begriffen an. Wenn Sie eine Frage zu Code stellen, ** geben Sie den Code ein, mit dem Sie Probleme haben, ** und nicht einen anderen Code. –

Antwort

2
SELECT * FROM shows where udate > 1472626800 AND showstate = 'MO' OR showstate = 'KS' 

Beachten Sie Vorrangsregeln in Booleschen Ausdrücken.

X AND Y OR Z 

Dies ist das gleiche wie:

(X AND Y) OR Z 

was wahr ist überall Z wahr ist, auch wenn X und Y falsch sind.

Um dies zu beheben, fügen Sie Klammern explizit den Standard-Volumen-Operation Vorrang außer Kraft zu setzen:

X AND (Y OR Z) 
1

Könnte Sie die Zeichenfolge richtig Datum

SELECT * FROM shows WHERE showdate > str_to_date('2016-08-31', '%Y-%m-%d'); 

oder mit Ihrem letzten Kommentar umwandeln sollte

SELECT * FROM shows 
WHERE showdate > str_to_date('2016-08-31', '%Y-%m-%d') 
AND showstate IN ('MO','KS') order by showdate ASC 
+0

Ich muss die falsche sql für meine Filter verwenden, denn wenn ich es so mache, scheitert der Datumsfilter: SELECT * FROM zeigt, wo udate> 1472626800 AND showstate = 'MO' ODER showstate = 'KS' – ImproperUsername

+0

anzeigen a Probe bitte und erzähle mir den Datentyp von showdate – scaisEdge

+0

OK, es war ein total dumm, dumm noob Fehler. Diese sql macht was ich wollte: SELECT * FROM zeigt wo udate> 1472626800 AND showstate IN ('MO', 'KS') Auftrag von Udate ASC – ImproperUsername

Verwandte Themen