Formatar as datas do MySQL com SQL ou PHP
December 7th, 2006. Published under mysql, php. 18 Comments.
Para cada campo de uma tabela em um banco de dados MySQL você deve definir um tipo de campo correspondente aos dados que serão inseridos nesse campo. Lhe recomendo a leitura deste artigo: Escolhendo um Tipo de Campo Correto, MySQL e deste: MySQL - Data Types.
Para gravarmos datas em um campo, por exemplo, podemos usar DATE (YYYY-MM-DD), DATETIME (YYYY-MM-DD HH:MM:SS) ou TIMESTAMP (YYYYMMDDHHMMSS). Mas, na hora de exibirmos estes dados no site, nem sempre queremos exibí-los da mesma forma como foram gravados. Principalmente se tratando de datas, pois elas são gravadas no padrão americano: ano-mês-dia, e para nós brasileiros que estamos acostumados com o nosso padrão: dia/mês/ano pode ficar bem confuso e desconfortável.
Vou mostrar-lhe duas formas de exibir as datas no formato brasileiro, ou seja, dia/mês/ano.
Através de instruções SQL
Você irá criar sua instrução SQL assim:
SELECT *,date_format(nome_do_campo, '%d/%m/%Y') AS data FROM nome_da_tabela
E para exibir, usaremos:
$row['data']
Através do PHP com a função strtotime
echo date('d/m/Y', strtotime($row['nome_do_campo']));
Portanto, basta você escolher a que lhe for mais conveniente.
18 Comments
andrea cristina on February 8th, 2007
Leandro, vc conheçe alguma função que retorne a quantidade de dias entre duas datas informadas.
aguardo resposta.
leandro on February 9th, 2007
Olá Andrea,
Veja: http://leandro.w3invent.com.br/archive/calcular-dias-entre-duas-datas-com-javascript
Leandro Vieira Pinho´s Blog » Blog Archive » Função em PHP para exibir datas por extenso on April 17th, 2007
[...] falhei por aqui sobre Formatar as datas do MySQL com SQL ou PHP. O código da função segue [...]
Micox on June 4th, 2007
Valeu Leandro.
Acabei de usar este help aqui.
Valeu mesmo ![]()
Bruno on November 19th, 2007
Valew achei o que precisava
Sérgio Espíndola on December 23rd, 2007
Leandro, desculpe mas sou novato e estou utilizando WinXP + DW CS3 + PHP+ Apache + MySQL. Conto também com o phpMyAdmin. Pensei que em algum arquivo de configuração fosse possível alterar o formato. Quando você fala em “instrução SQL”, exatamente onde devo escrevê-la? Desculpe novamente, mas é que estou partindo do zero. Abraço e obrigado por qualquer ajuda.
Sérgio Espíndola
Leandro Vieira on December 24th, 2007
Olá Sérgio,
Não há um arquivo no qual você define o formato de exibição das datas. Mas há, formas de você alterará-lo ao exibi-la.
Por exemplo, as instruções SQL são utilizadas ao realizar um “Query” (consulta) ao banco de dados através de códigos PHP; nela podemos especificar o formato da data, como no exemplo acima.
Ou podemos usar somente códigos PHP para formatar a exibição de uma data, também como demonstrado acima.
Um abraço.
Luiz Gustavo Ricardo Restino on February 22nd, 2008
Leandro,
gostaria de realizar a seguinte rotina…
A pessoa faz um cadastro.. ao enviar os dados, o arquivo pega a data do sistema e manda junto como uma variavel no MySQL…
Depois tenho uma área administriva onde posso ver o cadastro completo e a data que foi efetuado. Estou pegando a data certinho do sistema.. mas no banco ele recebe como 0000-00-00 - Como resolvo isso?
Obrigado
henrique guedes on March 6th, 2008
Gustavo tem uma funcao no mysql chamada now()
que pega a data da hora e insere no banco mais o campo tem que ser date la no mysql
se vc mostra como esta fazendo tera a resposta
henrique guedes
http://www.obsidiann.com
Marcos Santos on March 11th, 2008
Sua função não funcionou na minha pagina.
Ela retorna a data atual e não a que está no banco e qdo retorna a que está no banco retorna YYYY-mm-dd. Se puder me ajudar ficarei grato.
O campo data no MySQL está como date.
Obrigado
Ricardo Campos on March 18th, 2008
Muito obrigado pela dica, funcionou perfeitamente em meu site!
Ivan Bonatelli on May 31st, 2008
Mto bom.
para dar uma melhorada, de um exemplo com horário!
Abs
Obrigado!
nei on June 6th, 2008
Olá Leandro
Nessa situação:
SELECT *,date_format(nome_do_campo, ‘%d/%m/%Y’) AS data FROM nome_da_tabela
Como fica se eu tiver 2 campos a serem formatados? tentei, mas sem sucesso.
SELECT *,date_format(campo1, campo2, ‘%d/%m/%Y’) AS data FROM nome_da_tabela
Sammy on June 23rd, 2008
Olá Leandro
Eu gostaria de saber se você sabe como eu faço para o usuário digitar a data assim: “23062008″ para que possa cadastrar no mysql assim:”20080623″ aguardo sua resposta. Se puder me enviar por email. Desde já agradeço.
Sammy on June 23rd, 2008
Ah ja ia me esquecendo de falar eu estou usando php e mysql é para um trabalho de escola.
Lucas on July 3rd, 2008
Olá, Leandro
Cara queria saber se vc tem algum curso de css tabelles, e já aproveitando to tentando formatar a data em um site meu, tentei usar as 2 funções a do mysql e a do php , mas todas 2 apresentaram erros de sintaxes eu deu uma olhada no codigo e parece estar tudo ok, mas esses erro de sintaxe persiste.
Muito Obrigado
Vinícius on October 6th, 2008 (8 hours ago)
fiz esse código aqui e deu “unspected {”
function converter_data($strData){
if {preg_match(”#/#”,$strData) == 1) {
$strDataFinal = “‘”;
$strDataFinal .= implode(’-', array_reverse(explode(’/',$strData)));
$strDataFinal .= “‘”;
}
return $strDataFinal;
}
olha só o meu código aqui:
Eder Campos Lopes on December 28th, 2006
Bom eu ja conhecia este codigo, mais isso pode ser um problema porque quando vc formata um campo assim, se ele for indece, já era perdeu