Leandro Vieira Pinho´s Blog

Just another WordPress weblog

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

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

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 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:

http://forum.wmonline.com.br/index.php?showtopic=206737

Leave a Comment