Muitos iniciantes, e até mesmo alguns programadores experientes tem algum problema quanto o assunto é o armazenamento de datas em banco de dados MySQL, utilizando o PHP. Isso porque o MySQL armazena os dados no campo classificado com Date de uma maneira não muito condizente com aquilo que estamos acostumados. Vamos pegar como exemplo o dia 06 de Novembro de 2009 (aniversário da Isabella! Te amo, minha princesa!). Nós podemos facilmente abreviá-la para o formato 06/10/2009.
Imagine um formulário onde essa data é informada nesse formato. Ao ser feio o INSERT no MySQL o resultado, ela seria armazenada como um valor nulo, ou na melhor das hipóteses em algo totalmente diferente daquilo que você pretendia. Enquanto nós costumamos utilizar datas abreviadas usando o formato DIA/MÊS/ANO, o MySQL o faz utilizando o formato ANO-MES-DIA. Qualquer coisa que venha fora desses padrões, será completamente ignorado pelo MySQL.
Já vi alguns tentando contornar esse problema tratando a data no PHP antes de enviá-la para ser salva no MySQL. Esse tratamento consiste basicamente em inverter as posições dos algarismos e trocar as barras por hífens. Algo mais ou menos assim:
<?php
$data="17/08/2009";
$arr=explode('/',$data);
$data=$arr[2].'-'.$arr[1].'-'.$arr[0];
?>
O exemplo acima até que funciona, apesar do POG… Outra variação desse método é a utilização de Regex ou até mesmo as funções de tratamento de strings que o PHP fornece.
Eu, pessoalmente, sou adepto do que costumo chamar de “trabalho preguiçoso”. Não entenda “preguiçoso” como algo mal feito, ou feito com má vontade; mas sim como a busca de uma solução mais rápida, clara e objetiva, e que consuma o menor tempo possível.
Então porque você não deixa o MySQL fazer esse trabalho pra você? Em vez de você quebrar a cabeça com a criação de códigos, funções, classes e loops, porque não utilizar as funções de tratamento de Data do MySQL?
Basta fazer o seguinte:
INSERT INTO nomedatabela (seucampodate) VALUES (STR_TO_DATE('06/11/2009', '%d/%m/%Y'));
Note o uso da função STR_TO_DATE(). Ela exige basicamente dois parâmetros:
- O primeiro é a string contendo a data, seja em qual formato for.
- O segundo parâmetro é o segredo para a mágica da coisa. Ele recebe a máscara que o MySQL deve utilizar para interpretar a data. Nesse caso, %d significa o dia (dois dígitos), %m o mês (dois dígitos) e %Y o ano (com quatro dígitos).
A conversão da data abreviada como estamos acostumados, para o formato do MySQL será feita automaticamente.
Confira também outras funções para o tratamento de datas no MySQL acessando a documentação do MySQL, clicando aqui.





