Função SQL/MYSQL para transformação do campo DATE ou DATETIME
Eis o caso: Você quer que seu cliente cadastre uma data no seguinte formato: “19/02/2008″ (d-m-Y) ou quer que esta mesma data apareça para seu cliente.
O problema: O banco de dados use como formato padrão Y-m-d, ou seja, no caso acima “2008-02-19″ e aí, existem duas saídas viáveis e uma terceira que é o que eu vejo a maioria dos programadores usar.
- Configurar o formatação dos campos tipo DATE no banco de dados, caso você seja o administrador do BD.
- Utitlizar funções internas do mysql para a formatação.
- Criar nos próprios scripts uma forma de receber aquela string e criar rotinas para a transformação.
A primeira opção seria a melhor, se não fosse o fato de modificar todo o seu BD atual. Cuidado! Por se tratar de um padrão universal o formato Y-m-d muitas aplicações seriam prejudicadas caso usassem o mesmo banco de dados que você alterou o modo de exibição.
A segunda opção é a que eu venho lhes apresentar no exemplo abaixo:
digita_e_envia.html
<form action="recebe_e_grava.php" methos="post">
<input type="text" name="data" value="19/02/2008" />
</form>
recebe_e_grava.php
$data = $_POST["data"];
$sql = "INSERT INTO tb_tabela ('id', 'data') VALUES (NULL, str_to_date('$data', '%d/%m/%Y'))";
mysql_query($sql);
apresenta.php
$sql = "select id, date_format(data, '%d/%m/%Y') from tb_tabela";
mysql_query($sql);
Pronto!
Eis as funções:
str_to_date(’19/02/2008′, ‘%d/%m/%Y’) = str_to_date($string, $formato_da_string) para a transformação de uma string no seu formato em formato padrão.
date_format(data, ‘%d/%m/%Y’) = date_format (campo_da_tabela, $formato_da_string) para a transformação de um campo no formato padrão da tabela para o seu formato.
Eu utilizo como formato dd/mm/yyyy. Por isso, se você utiliza outro que não esse ou o padrão universal leia atentamente a documentação do Mysql abaixo.
Valeu!
Referência:
Documentação Mysql - str_to_date()
Documentação Mysql - date_format()
Posted on February 19th, 2008 by admin
Filed under: php, dicas, mysql, sql | No Comments »

