Este código funciona:(tenga en cuenta que el espacio se elimina después de "CAST")
SELECT CAST(20091023 as date);
Resulta que MySQL requiere que una lista específica de funciones integradas no tenga espacios entre el nombre de la función y el paréntesis. Consulte esta página en el Manual de MySQL para obtener más información sobre por qué existe este comportamiento.
La siguiente lista de funciones tiene la misma restricción en MySQL 5.1 (hay muchas más en versiones anteriores):
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
¡Espero que esta respuesta te ayude a evitar perder la misma cantidad de tiempo que yo perdí en esto! :-)