Ich habe eine Tabelle mit folgenden SpaltenNehmen bestimmte Bedingung auf bestimmte Zeilen in SQL-Anweisung
(name: varchar), (mydate: DATE), (endtime: TIME)
Ich versuche zu bekommen bestimmte Zeilen basierend auf den folgenden Bedingungen:
- mydate innerhalb eines bestimmten Bereichs ist
- mydate> Datum (NOW())
- endTime> Zeit (NOW()), sollte diese gelten nur für "Heute" Datumszeilen
Das Problem ist mit EndTime. Betrachten wir zum Beispiel die folgenden Daten
- Äpfel 2011-02-01 21.00.00
- Orange 2011-03-02 10.00.00
- Trauben 2011-05-10 11.00 : 00
Wenn die Eingänge auf die Abfrage sind
- Bereich: 2011-01-01 bis 2011-04-01
- Datum (NOW()): 2011 -01-01
- Zeit (NOW()): 20:00:00
Betrachten Sie die Abfrage
SELECT name FROM mytable
WHERE mydate BETWEEN '2011-01-01' AND '2011-04-01'
AND date >= DATE(NOW())
AND endTime > TIME(NOW())
Die einzigen Abfrage-Ergebnisse 'Äpfel'. Aber das richtige Ergebnis ist "Äpfel" und "Orange". Das Problem ist Bedingung: endTime> Zeit (NOW()), dies sollte nur für "heutige" Datumszeilen gelten.
Ich möchte nicht UNION, wie meine ursprüngliche Abfrage ist groß. Gibt es eine Möglichkeit, die Bedingung nur auf bestimmte Zeilen anzuwenden.
Irgendwelche Ideen werden geschätzt. Danke.
Danke OMG Ponys. – metalhawk