MySQL: Definierte Variable in SELECT Statement funktioniert nicht

Lapachon

Mitglied
Hallo!


Hab mal ein Frage.

Ich musste eine Datenbank übernehmen wo das Datum in drei Spalten steht, also: Tag,Monat,Jahr. - Warum, keine Ahnung?! :eek:

Jedenfalls muss ich daraus eine einige Daten selektieren die zwischen dem 01.November.2009 und 30.November.2010 liegen. Ist ja eigentlich ganz einfach.

Jedoch liefert mir dieses Statement immer ein leeres Resultat:

Code:
SELECT @test:=CONCAT(trouble_year,'-',LPAD(trouble_month,02, '0'),'-',LPAD(trouble_day,02, '0')) AS showtest FROM testtabelle WHERE @test BETWEEN '2009-11-01' AND '2010-11-30'

Wenn ich denn WHERE Teil weglasse, liefert er mir wunderbar sämtliche Datensätze in einem Vernünftigen Format. Sobald ich aber sage das ich nur die Datensätze brauche die ZWISCHEN diesen beiden Werten liegt, bekomme ich nur ein leeres Ergebniss.

Wäre super wenn einer von euch einen Tip hat.

Danke!

Gruß
Walter
 
Hi

Konvertier die ganzen Werte doch mal in dein Datum. Zur Zeit vergleichst du Strings und da wird der Parser nicht entscheiden können, was nun "zwischen" bedeuten soll
 
Hi!

Danke für die Antwort.

Wenn ich das richtig Verstanden habe meinst du so oder: (CONVERT)

Code:
SELECT @test:=CONCAT(trouble_year,'-',LPAD(trouble_month,02, '0'),'-',LPAD(trouble_day,02, '0'), CONVERT(@test AS DATE)) AS test FROM troubles WHERE @test BETWEEN '2009-11-01' AND '2010-11-30'

Ergibt aber eine Fehlermeldung.

Hier das gleich aber mit CAST:
Code:
SELECT @test:=CONCAT(trouble_year,'-',LPAD(trouble_month,02, '0'),'-',LPAD(trouble_day,02, '0'), CAST(@test AS DATE)) AS test FROM troubles WHERE @test BETWEEN '2009-11-01' AND '2010-11-30'

Bringt mir wieder ein leeres Ergebniss.

Hast du noch eine Idee?
 
Und wie lautet die Fehlermeldung?

Du solltest übrigens die Konvertierung auch da machen, wo du die Daten benötigst die Konvertierung ist nicht permanent und konvertiert die komplette Variable sondern nur deren Daten wenn sie abgefragt werden (siehe Hilfe)
Außerdem sollst du alle Werte die Daten darstellen auch in den entsprechenden Typ konvertieren. Aktuell arbeitest du immer noch auf Strings
 
Hallo Nico!


Danke für deinen Tip. Habe nun die Daten da Bereitgestellt wo ich sie zur Überprüfung brauche.
Hat gleich auf anhieb funktioniert.
 
Zurück