Freelancers BR

Encontre dicas, tutorias e empregos

Formatar Data no Mysql

Há alguns meses postei um tutorial que ensina formatar um campo do tipo data, do banco mysql.
Porém hoje mostro nesse pequeno tutorial uma forma “mais correta” de se formatar uma data do mysql, isso dentro do banco de dados, utilizando a função DATE_FORMAT do mysql.

SELECT DATE_FORMAT('2008-04-09', '%d/%m/%Y');

Execute essa linha de comando dentro do seu banco mysql, você deve ter obtido o seguinte resultado:

09/04/2008

Para mais detalhes, consulte o manual do mysql, qualquer dúvida basta deixar um comentário que responderei o mais breve possível.

Posts relacionados:

  1. Formatar data do MySQL com PHP
  2. UPDATE com PHP e MySql
  3. Select com php e mysql
  4. Instalação Apache + PHP + MySQL
  5. Criando uma tabela no MySQL

Tags: , , , , , , ,

Postado em quarta-feira, outubro 1st, 2008 at 22:36 na categoria Tutoriais. Siga o RSS 2.0 feed. You can leave a response, or trackback from your own site.

19 Respostas to “Formatar Data no Mysql”

  1. 4/01/2009 as 10:43

    Neto disse:

    Caso o SQL for “genérico” com apenas uma linha no PHP podemos também resolver o problema:

    $data = date(“d/m/Y”, strtotime($data_do_banco));

    Fica ae mais uma dica, []s

  2. 4/01/2009 as 13:34

    Lucas Renan disse:

    Neto, é uma boa dica.
    Mas acredito que formatando a data direto no SQL é melhor. =]

  3. 9/01/2009 as 11:17

    Bruno Veiga disse:

    Olá, Como no DW, faço com que a variável no formato dd/mm/aaaa seja convertida para o formato do MYSQL (yyyy/dd/mm) para que ele possa fazer uma filtragem correta.
    Como ficaria, por exemplo:

    SELECT data_pag
    FROM pagamentos
    WHERE pagamentos.data_pag < variaveldata

    Variável:
    Nome: variaveldata
    Tipo: Date
    Valor: Request.Form(data1)
    Valor Padrão: 01/01/2020

    Só para deixar claro, no formulário, as datas serão inseridas no formato dd/mm/aaaa

    Desde já agradeço!

  4. 9/01/2009 as 12:37

    Bruno Veiga disse:

    Olá, eu aprendi… hehe
    É só utilizar a função STR_TO_DATE, pois ela transforma a variável e data para o MYSQL.

    Exemplo:
    SELECT *
    FROM evento
    WHERE data_eve > STR_TO_DATE(vardata,’%d/%m/%Y’)

    Ou seja, eu converto a variável e indico em qual formato a data está, para ser convertida na forma como o MYSQL aceita.

    Valeu!

  5. 11/01/2009 as 1:23

    Lucas Renan disse:

    boa dica Bruno,

    acho que o str_to_date é para converter mesmo uma string em data, o date format é para formatar mesmo a data..

    teria que perguntar para algum especialista em MySql qual das duas funções é mais rápida.. em quais casos usar…

  6. 17/05/2009 as 1:22

    Daniel Tenorio disse:

    Amigos, quando uso:
    $data = date(”d/m/Y”, strtotime($data_do_banco));
    as datas de valor NULL ficam como 31/12/1969. como resolver?

  7. 17/05/2009 as 17:03

    Lucas Renan disse:

    Daniel,

    você obtem como resultado 31/12/1969, justamente porque o campo está vazio, e foi na década de 70 que surgiu o UNIX (LINUX é baseado no UNIX), então provavelmente o MySQL mostra a “primeira data”.
    No momento não vejo outra solução a não ser filtrar a consulta para os campos de data que estejam com valores diferentes de NULL ou fazer um IF no PHP, se a $data for diferente de 31/12/1969. Você pode utilizar a função strcasecmp para comparar strings.

  8. 13/07/2009 as 7:54

    ivanila disse:

    olá, eu estou a programar com php, estou a tentar fazer consulta em base dados mysql, e os dados sao introduzidos atvavez de um formularios html, a consulta e feita apartir da data, so que cada campo do formularios tem um nome na data por exemplo tenho um campo com nome mes, outro com dia e mais um com ano, e na base dados tem uma variavel que guarda data, preciso saber como eu faço para que essas tres variaveis ficam um so para poder fazer consulta na base de dados. agradecia muito se pudesse ajudar-me,

  9. 13/07/2009 as 13:01

    Lucas Renan disse:

    Ivanila,

    existe a posibilidade de colocar a data como tipo DATE no MySQL?

  10. 28/08/2009 as 14:40

    Felipe Gabriel disse:

    sim, basta selecionar no type = date na hora de criar a coluna.

  11. 21/01/2010 as 11:50

    Samir disse:

    Creio que a data sendo formatada pelo PHP é mais inteligente.
    basta penssar no que o Neto falou e levar em concideração MVC que a escolha pela formatação da data na aplicação é a melhor maneira mesmo.
    Exemplo:
    na mudança do SGBD precisaria mecher apenas na estrutura do banco.

    caso fosse feito via banco teria de ir no codigo e aplicar a função especifica para aquele SGBD caso não houver genericidade.

    Gostei da dica, e cada caso é um caso.

  12. 21/01/2010 as 13:22

    Lucas Renan disse:

    Samir,

    eu costumo usar frameworks já faz algum tempo, (como rails, cakephp, zend framework).
    Então eu recomendo que seja criado um helper para formatar a data. Mas no caso de quem programa no POG e tem sua lógica de negócios junto com a camada de aplicação, pode ser interessante formatar a data direto na string SQL.

  13. 16/04/2010 as 14:21

    Leandro Sciola disse:

    Olá a todos!

    A instrução SQL a seguir, pega datas do tipo VARCHAR, sem repetir as mesmas datas, e coloca em ordem crescente.

    SELECT DISTINCT CONCAT(MID(data,7,4),’/',MID(data,4,2),’/',MID(data,1,2)) AS data FROM sua_tabela ORDER BY data ASC

    Exemplo:

    Data do tipo VARCHAR que está no banco de dados: (Dia / Mês / Ano)

    18/04/2010
    16/04/2010
    01/02/2009

    O resultado dessa instrução SQL será: (Ano / Mês / Dia), com as datas ordenadas.

    2009/02/01
    2010/04/16
    2010/04/18

    Agora é só inverter as datas para o formato europeu (Dia / Mês / Ano):

    01/02/2009
    16/04/2010
    18/04/2010

    Fiquem com Deus!

    Abraço!

  14. 22/12/2010 as 21:39

    Jonatan disse:

    Obrigado amigo NETO essa função funcionou mesmo.

    $data = date(“d/m/Y”, strtotime($data_do_banco));

  15. 27/12/2010 as 17:38

    adalberto disse:

    O problema não é selecionar a DATA no formato do Brasil, mas sim INSERIR a data no formato do Brasil dd/mm/YYYY.

  16. 31/01/2011 as 15:11

    Rogério disse:

    Caros amigos!
    Estou migrando de Access para MySQL, até ai tudo bem, o detalhe é o seguinte o formato de data. Preciso alterar o formato da data no Banco de Dados, na estrutura interna de yyyy/mm/dd para dd/mm/yyyy. Isso é… se for possível.
    Desde já agradeço.

  17. 26/03/2011 as 19:43

    Koiti Sobu disse:

    Fiz o seguinte formulario: (Como faço para subtrair hora no formato 00:00?)Me ajude!Grato!!

  18. 25/09/2011 as 18:17

    Rômulo disse:

    Como eu faço pra utilizar na consulta sem ter que informar a data desejada?

  19. 2/02/2012 as 11:59

    Clodoaldo disse:

    Para gravar no banco de dados eu utilizao uma função simples de conversão de dados antes da instrução sql:

    Function data($data){
    $dia=”;
    $mes=”;
    $ano=”;
    list($dia,$mes,$ano)=split(‘[/]‘,$data);
    $valor=$ano.”-”.$mes.”-”.$dia;
    return $valor;
    }
    Converte uma data do formato dd/mm/aa no formato padrão do mysql: aa-mm-dd ou aaaa-mm-dd.

    Para mostrar as datas num relatório ou formulário, simplesmente utilizo: $date->format(‘d/m/Y’)

    Saudações

Deixe seu comentário!