Этот код работает: (обратите внимание, пробел удаляется после "CAST")
SELECT CAST(20091023 as date);
Оказывается, MySQL требует, чтобы в определенном списке встроенных функций не было пробелов между именем функции и круглыми скобками. См. на этой странице в руководстве по MySQL для получения дополнительной информации о том, почему существует такое поведение.
Следующий список функций имеет такое же ограничение в MySQL 5.1 (их много в предыдущих версиях):
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
Надеюсь, этот ответ поможет вам не тратить столько же времени, сколько я потратил на это! : -)