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!

39 respostas para “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);

  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!

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

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

*