As funções CAST() e
        CONVERT() devem ser usada para tomar um valor
        de um tipo e produzir um valor de outro tipo. As suas sintaxes
        são as seguintes:
      
CAST(expressão AS tipo) CONVERT(expressão,tipo) CONVERT(expr USING transcoding_name)
        O valor tipo pode ser um dos seguintes:
      
            BINARY
          
            CHAR
          
            DATE
          
            DATETIME
          
            SIGNED {INTEGER}
          
            TIME
          
            UNSIGNED {INTEGER}
          
        CAST() e CONVERT() estão
        disponíveis a partir do MySQL 4.0.2. O tipo de conversão
        CHAR está disponível a partir do versão
        4.0.6. A forma USING de
        CONVERT() está disponível a partir da
        versão 4.1.0.
      
        CAST() e CONVERT(... USING
        ...) são da sintaxe SQL-99. A forma
        não-USING de CONVERT() é
        da sintaxe ODBC.
      
        CAST() é da sintaxe SQL-99 syntax e
        CONVERT() é da sintaxe ODBC.
      
        As funções de conversão são principalmente úteis quando
        você deseja criar uma coluna com um tipo específico em uma
        CREATE ... SELECT:
      
CREATE TABLE nova_tabela SELECT CAST('2000-01-01' AS DATE);
        As funções também podem ser úteis para ordenar colunas
        ENUM na ordem lexicográfica. Normalmente a
        ordenação das colunas ENUM ocorrem usando
        os valores numéricos internos. Converter os valores para
        CHAR resultam em uma ordenação
        lexicográfica:
      
SELECT enum_col FROM tbl_name ORDER BY CAST(enum_col AS CHAR);
        CAST(string AS BINARY) é a mesma coisa que
        BINARY string. CAST(expr AS
        CHAR) trata a expressão como uma string com o
        conjunto de caracteres padrão.
      
        NOTA: No MysQL 4.0 o
        CAST() para DATE,
        DATETIME ou TIME só marca
        a coluna para ser um tipo específico mas não altera o valor da
        coluna.
      
No MySQL 4.1.0 o valor será convertido para a coluna correta quando for enviado para o usuário (este é um recurso de como o novo protocolo na versão 4.1 envia as informações de data para o cliente):
mysql> SELECT CAST(NOW() AS DATE);
       -> 2003-05-26
        Em versões futuras do MySQL (provavelmente 4.1.2 ou 5.0) iremos
        corrigir o fato de que CAST também altera o
        resultado se você usá-lo como parte de uma expressão mais
        complexa, como CONCAT("Data: ",CAST(NOW() AS
        DATE)).
      
        Você não deve utilizar CAST() para extrair
        dados em formatos diferentes, mas sim para usar funções strins
        como LEFT ou EXTRACT().
        See Secção 6.3.4, “Funções de Data e Hora”.
      
Para converter uma string para um valor numérico, normalmente não é necessário se fazer nada; apenas use a string como se fosse um número:
mysql> SELECT 1+'1';
       -> 2
        Se você usar um número em um contexto string, o número será
        convertido automaticamente para uma string
        BINARY.
      
mysql> SELECT CONCAT("hello you ",2);
       ->  "hello you 2"
        O MySQL suporta aritimético com valores de 64 bits com sinal e
        sem sinal. Se você está usando operações numéricas (como
        +) e um dos operandos é unsigned
        integer (inteiro sem sinal), o resultado também será
        sem sinal (unsigned). Você pode forçar o tipo usando os
        operadores de conversão SIGNED e
        UNSIGNED para converter a operação para um
        inteiro de 64 bits com sinal e sem sinal, respectivamente.
      
mysql>SELECT CAST(1-2 AS UNSIGNED)-> 18446744073709551615 mysql>SELECT CAST(CAST(1-2 AS UNSIGNED) AS SIGNED);-> -1
        Note que se um dos operandos for um valor de ponto flutuante o
        resultado é um valor de ponto flutuante e não é afetado pela
        regra acima. (Neste contexto DECIMAL() é
        considerado um valor de ponto flutuante).
      
mysql> SELECT CAST(1 AS UNSIGNED) -2.0;
        -> -1.0
Se você estiver utilizando uma string em uma operação aritimética, ela é convertida para um número de ponto flutuante.
        O tratamento de valores sem sinais foi mudado no MySQL 4.0 para
        suportar valores BIGINT apropriadamente. Se
        você tiver algum código que deseja executar no MySQL 4.0 e
        3.23 (casos em que você provavelmente não poderá usar a
        função CAST()), você pode utilizar o
        seguinte truque para conseguir um resultado com sinal quando
        subtraindo duas colunas do tipo unsigned integer (inteiro sem
        sinal):
      
SELECT (coluna_sem_sinal_1+0.0)-(coluna_sem_sinal_2+0.0);
A idéia é que as colunas sejam convertidas para valores de ponto flutuante antes da subtração ocorrer.
        Se você tiver algum problema com colunas
        UNSIGNED no seu aplicação MySQL antiga ao
        portar para o MySQL 4.0, você pode usar a opção
        --sql-mode=NO_UNSIGNED_SUBTRACTION ao iniciar
        mysqld. Note, no entanto, que enquanto você
        utilizar esta opção, não será possível conseguir um uso
        efetivo do tipo de coluna BIGINT UNSIGNED.
      
        CONVERT() com USING é
        usado para converter dados entre diferentes conjuntos de
        caracteres. No MySQL, nomes trancodificados são o mesmo que o
        nome do conjunto de caracteres correspondentes. Por exemplo,
        esta instrução converte a string 'abc' no
        conjunto de caracteres padrão do servidor na string
        correspondente no conjunto de caracteres
        utf8:
      
SELECT CONVERT('abc' USING utf8);
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.

