Ce code fonctionne :(notez que l'espace est supprimé après "CAST")
SELECT CAST(20091023 as date);
Il s'avère que MySQL exige qu'une liste spécifique de fonctions intégrées n'ait pas d'espace entre le nom de la fonction et la parenthèse. Voir cette page dans le manuel MySQL pour plus d'informations sur les raisons de ce comportement.
La liste de fonctions suivante a la même restriction dans MySQL 5.1 (il y en a beaucoup plus dans les versions précédentes) :
ADDDATE
BIT_AND
BIT_OR
BIT_XOR
CAST
COUNT
CURDATE
CURTIME
DATE_ADD
DATE_SUB
EXTRACT
GROUP_CONCAT
MAX
MID
MIN
NOW
POSITION
SESSION_USER
STD
STDDEV
STDDEV_POP
STDDEV_SAMP
SUBDATE
SUBSTR
SUBSTRING
SUM
SYSDATE
SYSTEM_USER
TRIM
VARIANCE
VAR_POP
VAR_SAMP
J'espère que cette réponse vous aidera à éviter de perdre le même temps que moi à ce sujet ! :-)