Функция определения длины строки в MySQL называется LENGTH (), а не len ()
http://dev.mysql.com/doc/refman/5.1/en/string-functions.html#function_length
MORE:
Я добавил рабочую версиювашей функции ниже.Но обратите внимание, что встроенная функция DATE_FORMAT () делает именно то, что вы хотите:
mysql> SELECT FormatDate( NOW() ), DATE_FORMAT( NOW(), "%m/%d/%Y" );
+---------------------+----------------------------------+
| FormatDate( NOW() ) | DATE_FORMAT( NOW(), "%m/%d/%Y" ) |
+---------------------+----------------------------------+
| 07/15/2011 | 07/15/2011 |
+---------------------+----------------------------------+
Вы должны либо использовать ее, либо заменить тело своей функции вызовом этой функции.Вот, однако, MySQL-совместимая версия вашей функции:
DELIMITER $$
CREATE FUNCTION `FormatDate`(tiempo datetime) RETURNS varchar(10)
READS SQL DATA
BEGIN
DECLARE salida VARCHAR(10);
DECLARE dia VARCHAR(2);
DECLARE mes VARCHAR(2);
IF ( (tiempo <> '') AND ( tiempo <> '01/01/1900' ) ) THEN
SET dia := CAST( DAY( tiempo ) AS CHAR );
IF LENGTH( dia ) = 1 THEN
SET dia := CONCAT( '0', dia);
END IF;
SET mes := CAST( MONTH( tiempo ) AS CHAR );
IF LENGTH( mes ) = 1 THEN
SET mes := CONCAT( '0', mes );
END IF;
SET salida := CONCAT_WS( '/', mes, dia, CAST( YEAR( tiempo ) AS CHAR ) );
ELSE
SET salida := NULL;
END IF;
RETURN salida;
END $$
DELIMITER ;