Seite 1 von 1

Leeres Datum im SQL-Befehl

Verfasst: Mi, 22.08.2012 19:10
von arkadiuszpaluszek
Hallo,

ich versuche mit fiolgendem SQL-Befehl eine Abfrage zu generieren:

Code: Alles auswählen

mySQL="SELECT * FROM ""periodes_in_goodhouse"" WHERE ""from""<='"+data_end+"' AND (""until"">='"+data_begin+"' OR ""until""=NULL)"
alternativ auch so:

Code: Alles auswählen

mySQL="SELECT * FROM ""periodes_in_goodhouse"" WHERE ""from""<='"+data_end+"' AND (""until"">='"+data_begin+"' OR ""until""='')"
Es geht darum, dass alle Bewohner einer Pension rausgesucht werden sollen, welche in einem bestimmten Zeitraum da waren. Die Bewohner welche erst nach dem Anfang des angegebenen Zeitraums die Pension verlassen haben werden korrekt ausgesucht, nicht die aber welche noch da sind, weil die Angabe für ein leeres Datum wohl nicht stimmt.

Wenn =NULL und ='' nicht zum Erfolg führen, wie kann ich es noch versuchen?

In der Datenbank war das entsprechende Feld zunächst fälschlicherwerise als VARCHAR deklariert, habe es in Date verändert, ändert aber nichts am Ergebnis der Abfrage.

Gruß

Arek

Re: Leeres Datum im SQL-Befehl

Verfasst: Mi, 22.08.2012 20:06
von DPunch
Servus

Code: Alles auswählen

mySQL="SELECT * FROM ""periodes_in_goodhouse"" WHERE ""from""<='"+data_end+"' AND (""until"">='"+data_begin+"' OR ""until"" IS NULL)"
oder kürzer

Code: Alles auswählen

mySQL="SELECT * FROM ""periodes_in_goodhouse"" WHERE ""from""<='"+data_end+"' AND IFNULL(""until"",'9999-12-31') >='"+data_begin+"'"
NULL ist kein Wert und kann daher auch nicht mit Vergleichsoperatoren erfasst werden.