Trabalhando corretamente com campos DATE no PHP e mySQL

Muitos programadores inexperientes ou preguiçosos com a intenção de poupar trabalho ou pesquisa, acabam usando campos do tipo VARCHAR para guardar dados do tipo DATE. Tudo vai funcionar perfeitamente até o momento em que for necessário realizar uma operação exclusiva de tempo como por exemplo ordenar dados por um certo período em uma consulta SQL.

O segredo para trabalhar com os dados DATE esta em convertê-los corretamente para o formato americano (YYYY-MM-DD) no momento de inserir do banco de dados, depois para exibir os valores, podemos formatá-los da maneira que acharmos mais conveniente:

Convertendo datas brasileiras para o formato americano e inserindo no mySQL: (DD/MM/AAAA para YYYY-MM-DD):

<?php
if(isset($_POST["meu_formulario"]))
// recebe os dados postados pelo usuário no formato brasileiro
{
$data = implode('-',array_reverse(explode('/',$_POST['data_brasileira'])));
// substitui as barras '/' por hifens '-' e inverte a ordem da string.
$sql = 'INSERT INTO tabela(campo_tipo_data) VALUES($data)';
$consulta = mysql_query($sql) or die(mysql_error());
// insere a data convertida no BD
}
?>

Exibindo datas no formato americano do mySQL para para o formato brasileiro (YYYY-MM-DD para DD/MM/AAAA):

<?php
$sql = “SELECT date_format(campo_tipo_data, '%d/%m/%Y') AS data FROM tabela”;
$consulta = mysql_query($sql) or die(mysql_error());
// consultando e convertendo...
while
(
$row = mysql_fetch_array($result))
{
echo 'Data: '. $row['data'];
// exibindo data convertida
}
?>

Explicação
date_format é uma funçõa do mySQL para formatação de campos data, a expressão:
date_format(campo_tipo_data, ‘%d/%m/%Y’) AS data cria um campo temporário date ou com o nome que você escolher.
Nota: a expressão acima pode ser concatenada dentro de sua consulta, exemplo:

SELECT campo1,campo2,campo3,date_format(campo4, '%d/%m/%Y') AS DATA,campo5 FROM tbdados WHERE campo1="meu_dado" ORDER BY campo2;
Compartilhe Também:

Comentários(14)

Deixe seu comentário