Página Inicial > HTML | PHP | JavaScript > Melhor maneira de converter data para mysql [PHP]

Melhor maneira de converter data para mysql [PHP]

Se você quer converter uma data vinda do MYSQL para o formato PT-BR use o seguinte comando:

 $data = implode("/",array_reverse(explode("-",$data)));

Assim vai converter a data do mysql para o formato brasileiro.

Ex: 2010-31-04 para 31/04/2010

Se você quer converter uma data em formato brasileiro para inserir no mysql use:

$data = implode("-",array_reverse(explode("/",$data)));

O resultado será:  31/04/2010 para 2010-31-04

Espero que ajude!

  1. marcia
    16, setembro, 2010 em 17:00 | #1

    voçe e casado? tchau

  2. 17, setembro, 2010 em 17:55 | #2

    ola sou novato em php e não sei o que eu estou errando ja que utilizei o cod. citado no site …pois o cliente quer que a data seja ordenada e qd alterei me deparei com aquele velho detalhe da data americana e utilizei o cod postado e não esta dando certo ….
    esse é o cod para exibir qd utilizo o cod acima da erro…muito obrigado

  3. 18, setembro, 2010 em 00:21 | #3

    Não .. hauauauaau

  4. 18, setembro, 2010 em 00:28 | #4

    @Andre
    Boa noite amigo, me adicione no msn se não conseguir…. lucascatani@hotmail.com

    para ordenar por data não precisa converter ela, esse código é para mostrar a data para nós brasileiros no nosso formato e para mandar para o mysql no formato dele!

    exemplo vem a data do banco:

    $datadobanco = Select date from banco
    echo $datadobanco;

    //vai mostrar 2010-31-05 que é (ano-dia-Mês)

    agora convertemos ela para aparecer como nós estamos acostumados (dia-mês-ano)

    $dataconvertida = implode(“/”,array_reverse(explode(“-”,$datadobanco)));
    echo $dataconvertida;

    //agora vai mostrar a data assim 31/05/2010

    Se você está querendo pegar os registros ordenados por data do banco faça isso no sql:

    Select * from tabela order by ‘data’;

    Abraço!

  5. Juliana
    24, novembro, 2010 em 17:18 | #5

    Oi..
    Já passei por inumeros sites ..e nada resolve meu problema
    preciso converter o valor do campo data digitado pelo usuário para o padrão do mysql
    o usuário digita 10/03/1987 e tem que virar para cadastrar 1987-03-10.
    Tentei sua explicação, mas não adiantou.
    Já tentei inumeras outras e nada
    A questão é que estou programando em PHP orientado a objetos usando MVC….tenho a classe view…control e model
    onde faço essa conversão que tu ensinou?

    Tenho isso na view após o usuário confirmar cadastro
    if(isset($_POST)){
    $nome_cliente = $_POST["nome_cliente"];
    $nome_atendimento = $_POST["nome_atendimento"];
    $telefone = $_POST["telefone"];
    $email = $_POST["email"];
    inicio_contratoC == implode(“-”,array_reverse(explode(“/”,$inicio_contratoC)));
    $inicio_contratoC = $_POST["inicio_contratoC"];

    $cad = new Control();
    $cad->cadCliente($nome_cliente,$nome_atendimento,$telefone,$email,$inicio_contratoC);
    }

    Tenho também javascript para garantir que os campos não sejam nulos e que data seja inserida no formato DD/MM/AAAA. Afinal não posso exigir que o usuário preencha no padrão americano.

    alguma idéia??
    Obs. Uso o phpMyAdmin =)
    Grata

  6. 24, novembro, 2010 em 21:31 | #6

    @Andre
    me manda teu código que eu analiso! Abraço!

  7. 24, novembro, 2010 em 21:31 | #7

    @Lucas Catani

    Você inverteu as duas linhas, primeiro você recebe, depois você converte…

    certo
    $inicio_contratoC = $_POST["inicio_contratoC"];
    $inicio_contrato = implode(“-”,array_reverse(explode(“/”,$inicio_contrato)));

    errado
    $inicio_contratoC = $_POST["inicio_contratoC"];
    inicio_contratoC == implode(“-”,array_reverse(explode(“/”,$inicio_contratoC)));

    Grande abraço!

  8. 7, maio, 2014 em 14:00 | #8

    Ajudou DEMAIS DA CONTA !!! Vlws !!! E Parabéns !!!

  9. 20, junho, 2014 em 11:34 | #9

    gostaria de saber como usar esse codigo em um campo datatime ?

    att.

    Cleber

  10. Marcio
    24, junho, 2014 em 21:55 | #10

    Prezado Lucas,
    Tua postagem foi em 2010.
    e foi util a mim hj em 2014.

    abraço!

  11. Matheus Lopes
    11, agosto, 2014 em 16:59 | #11

    Cara, vc me salvou a vida. Muito obrigado mesmo

  12. Diego Silva
    15, agosto, 2014 em 09:22 | #12

    Olá Lucas
    Parabéns pelo blog.
    Sou estudante de MySQL e SQL server no curso ADV aqui no Rio, http://www.cursoadv.com.br, gostaria de saber se esse comando pode também ser usado no sql server.

  13. Adriano
    18, agosto, 2014 em 08:29 | #13

    Bom dia,

    gostaria de saber se existe uma forma “simples”, de converter as datas que já estão no DB para outro formato.

    Ex.: tenho os registros com as datas da seguinte forma: 18/08/2014, etc.
    Gostaria de converter para 2014-08-18.

    Todos os registros.

    Grato!

  14. Edilson
    21, setembro, 2014 em 20:10 | #14

    Muito obrigado camarada! ajudou bastante!

  15. Luiz R.
    27, setembro, 2014 em 01:39 | #15

    <?php

    function DataBRtoMySQL( $DataBR ) {
    $DataBR = str_replace(array(" – ","-"," "," "), " ", $DataBR);
    list($data, $hora) = explode(" ", $DataBR);
    return implode("-",array_reverse(explode("/",$data)))." ". $hora;
    }

    $DataBrasil = "27/09/2014 – 01:05:42";
    echo DataBRtoMySQL($DataBrasil)."”;

    $DataBrasil = “27/09/2014-01:05:42″;
    echo DataBRtoMySQL($DataBrasil).”";

    $DataBrasil = “27/09/2014 01:05:42″;
    echo DataBRtoMySQL($DataBrasil).”";

    $DataBrasil = “27/09/2014 01:05:42″;
    echo DataBRtoMySQL($DataBrasil).”";

    $DataBrasil = “27/09/2014 01:05:42″;
    echo DataBRtoMySQL($DataBrasil).”";

    ?>

  16. Péricles
    7, outubro, 2014 em 21:04 | #16

    Ótimo ajudou demais!

  17. 21, novembro, 2014 em 17:56 | #17

    melhor maneira é usar expressão literal

    $data = preg_replace(“‘^([0-9]{2})/([0-9]{2})/([0-9]{4})$’”,’$3-$2-$1′,$data);

    o inverso (para desfazer):

    $data = preg_replace(“‘^([0-9]{4})-([0-9]{2})-([0-9]{2})$’”,’$3/$2/$1′,$data);

  18. Angelo
    28, dezembro, 2014 em 16:32 | #18

    Muito obrigado. Funções simples e objetivas.

  19. 28, dezembro, 2014 em 17:19 | #19

    NA minha opinião pouca gente entende as expressões literais, então fica mais fácil fazer da maneira que eu postei. Sua resposta também é válida.

  20. 28, dezembro, 2014 em 17:21 | #20

    No banco de dados elas devem ficar gravadas aaaa-mm-dd

    Para exibir ela no formato desejado, você usa a função que tem neste tópico.

  21. 28, dezembro, 2014 em 17:21 | #21

    OI, eu nunca testei no SQL SERVER. Mas deve ter uma sintaxe parecida.

  22. Barreto
    14, janeiro, 2015 em 11:04 | #22

    Muito bom post. Simples, prático e funcional.
    Parabéns.

  23. 3, fevereiro, 2015 em 17:13 | #23

    A funcao do Luiz R para mim funcionou perfeitamente

  24. Adilson
    18, abril, 2015 em 20:45 | #24

    EU fiz conforme mostrado. deu tudo certo. só que para exibir na minha tabela, eu não gostaria que aparece o ano. Atualmente está assim 18/04/2015 e eu gostaria que aparece somente dia e mês = 18/04. já tentei de diversas maneiras e não consigo, além de ter procurado em tudo quanto é lugar na net
    . será que alguém poderia me ajudar?

  25. 19, maio, 2015 em 18:11 | #25

    Adilson :
    EU fiz conforme mostrado. deu tudo certo. só que para exibir na minha tabela, eu não gostaria que aparece o ano. Atualmente está assim 18/04/2015 e eu gostaria que aparece somente dia e mês = 18/04. já tentei de diversas maneiras e não consigo, além de ter procurado em tudo quanto é lugar na net
    . será que alguém poderia me ajudar?

    @Adilson

    $databanco = $data_encontrada_pelo_id->data_tabela_seu_bd;
    $z = DateTime::createFromFormat(“Y-m-d”, $databanco);
    $diames = $z->format(“d-m”);
    echo $diames;

    resultado na tela = dia-mes

  26. sNniffer
    29, maio, 2015 em 15:06 | #26

    Tão antigo e até hoje ajudando a nós meras larvas em php

  27. daniel
    2, junho, 2015 em 08:44 | #27

    onde eu colocaria esse comando em meu codigo?

    $data = implode(“-”,array_reverse(explode(“/”,$data)))

  28. 24, agosto, 2015 em 14:40 | #28

    Muito legal, eu estava mesmo precisando deste código

  29. RAFAEL
    30, março, 2016 em 21:12 | #29

    CARA! PARABÉNS! FUNÇÃO ÚTIL!

    Extremamente útil. Procurei em vários sites internacionais uma função similar, mas você exemplificou perfeitamente!

    Jesus e Maria te abençoe demais!

  30. Maicon
    28, abril, 2016 em 14:22 | #30

    Olá!

    Parabéns pelo blog e pelo artigo!
    Estou com uma dúvida e queria ver com você se consegue me ajudar, por favor.
    Tenho um campo na minha tabela no MySQL que é do tipo varchar e armazena uma data, no formato: 2016-04-27T21:42:34-03:00

    Preciso fazer um select filtrando os últimos 3 dias desse campo de data, mas não estou conseguindo fazer o filtro convertendo de varchar pra date.

    Poderia me ajudar, por favor?

    Obrigado!

  31. Davi Fiusa
    15, junho, 2016 em 02:49 | #31

    Em 2016 está sendo util haha vlw

  32. 13, julho, 2016 em 02:10 | #32

    Irmão muito legal,não só compartilhar o conteúdo, mas também a preocupação de responder a maioria das perguntas, forte abraço!

  33. 28, setembro, 2016 em 00:25 | #33

    Obrigado, abração

  34. 28, setembro, 2016 em 00:27 | #34

    Boa noite, só consegui ver tua necessidade agora. Meio atrasado!

    Primeira coisa, você poderia gravar essa data em timestamp ao invés de varchar? Aí fica mais fácil a operação. Posta teu código.

  35. 28, setembro, 2016 em 00:30 | #35

    Posta teu arquivo aí.

  1. Nenhum trackback ainda.
*