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!

Lucas Catani

40 comentários em “Melhor maneira de converter data para mysql [PHP]

  1. 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

  2. @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!

  3. 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

  4. @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!

  5. 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!

  6. <?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).””;

    ?>

  7. 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);

    1. 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.

  8. 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?

  9. 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

  10. onde eu colocaria esse comando em meu codigo?

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

  11. 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!

  12. 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!

    1. 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.

  13. tem alguma função para formatar assim : 15 ABR, 2016 , a minha vem do banco de dados assim 2016-02-22 !!

  14. 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!

  15. De todas as pesquisas que fiz aqui foi onde chegou mais perto deu entender essa quest├úo. fa├ºo parte dessa galera que sentar e aprender a fazer sozinho. Mas…. sem “ensinamentos jedi” o neg├│cio as vezes se complica. Estou montando um sistema de cadastro usando PHP, MySQL e Dreamweaver. O grande problema ├® que na hora de cadastrar as informa├º├Áes o “INSERT” do Dreamweaver parece criar uma grafia um pouco “diferente” de quando vejo algu├®m criar o c├│digo. Mas enfim.. t├í tudo pronto s├│ n├úo consigo essa parte de digitar a data d/m/Y no input e entrar Y/m/d no Banco. Na visualiza├º├úo eu j├í consegui inverter na hora de “mostrar” a data. EU usei esse c├│digo aqui:

    Já tentei usar seu código em várias partes da minha página de cadastro, mas nada. Desde já agradeço a atenção.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Voltar ao topo