Problem mit einer MySQL Abfrage (SUBSTRING)

beetel

Grünschnabel
Hallo zusammen,

Ich habe ein Problem mit einer Abfrage in einer MySQL Datenbank (v. 4) Die folgende Abfrage wird über eine Joomla! Seite abgefragt.

Ich bin leider nicht sehr gut in MySQL und kann keinen Fehler in meiner Abfrage finden. Kann mir irgendjemand weiterhelfen?

Vielen Dank im voraus

Fehler
Code:
SQL-Befehl: 

SELECT * , '' AS 'NA'
FROM stv_users u, stv_comprofiler ue
WHERE u.id = ue.id
AND u.block !=1
AND ue.approved =1
AND ue.banned =0
AND ue.confirmed =1
AND u.gid
IN ( 29, 19, 20, 21, 18, 18, 19, 20, 21, 30, 24, 23, 25, 23, 24, 25 ) 
AND (

`cb_personengruppe` = 'Athlet'
)
AND (
SUBSTRING( `cb_geburtstag` , 1, 4 ) >=1988
)
ORDER BY `cb_geburtstag` ASC 
LIMIT 0 , 30; 


MySQL meldet:  

#1064 - You have an error in your SQL syntax.  Check the manual that corresponds to your MySQL server version for the right syntax to use near '(`cb_gerurtstag`, 1, 4) >= 1988)  ORDER BY `cb_geburtstag` ASC


Ich hoffe SUBSTRING ist richtig?! Habe es auch mit SUBSTR probiert, es kommt genau der selbe Fehler.

Oder muss der Substring anschließend noch gecastet werden um einen größer/gleich Vergleich zu machen? Aber das geschieht doch eigentlich impliziet?

Schöne Grüße
Beetel
 
Zuletzt bearbeitet:
Danke für deine schnelle antwort aber daran lag es nicht... ich habe es selber herausgefunden


habe es jetzt mit dieser abfrage geschaft:
Code:
SELECT * , '' AS 'NA'
FROM stv_users u, stv_comprofiler ue
WHERE u.id = ue.id
AND u.block !=1
AND ue.approved =1
AND ue.banned =0
AND ue.confirmed =1
AND u.gid
IN ( 29, 19, 20, 21, 18, 18, 19, 20, 21, 30, 24, 23, 25, 23, 24, 25 ) 
AND (
cb_personengruppe = 'Athlet'
)
AND (
YEAR( cb_geburtstag ) >=1988
)
ORDER BY cb_geburtstag ASC 
LIMIT 0 , 30

hatte nicht daran gedacht, dass es vielleicht mit dem Feldtyp zusammenhängt, aber so gehts jetzt!

Eine Frage noch: kann man kein SUBSTRING auf den Feldtypen DATE anwenden?

grüße BeeTel
 
Das dürfte schwierig sein, da es verschiedene DATE-Formate gibt und somit die Regel nicht immer zutreffen dürfte. Denn in MySQL kann man auch vom amerikanischen auf das deutsche Datumsformat umschalten.
 
Zurück