Transformar datas para gravar no banco de dados (MySQL, Postgres e outros)
Publicado por Phylipe Venancio Soares (última atualização em 29/03/2018)
[ Hits: 10.169 ]
Homepage: http://www.energiageradores.com
Download funcoes_datas.php.txt
É muito chato ter um campo de data preenchido aos olhos do usuário no formato dd/mm/YYYY e quando vai gravar no banco de dados ter que fazer malabarismos.
Por isso fiz duas funções que convertem as datas para gravar no banco de dados e também ao contrário, pegar o resultado gravado no banco de dados e converter para um formato mais agradável ao usuário final.
As datas podem ser passadas com horário ou não.
<?php
function mysql2date($data){
    /*
        Formato da data:
            2018-03-21 14:47:25 -> retorna -> 21/03/2018 14:47:25
            2018-03-21 14:47 -> retorna -> 21/03/2018 14:47
            2018-03-21 -> retorna -> 21/03/2018
    */
    $data = trim($data);
    $ano = substr($data,0,4);
    $mes = substr($data,5,2);
    $dia = substr($data,8,2);
    $data_arrumada = "$dia/$mes/$ano";
    ## Se a data fornecida tiver hora, coloca tudo junto.
    if(strlen($data)==19){
        $caracteres = -8;
    }
    if(strlen($data)==16){
        $caracteres = -5;
    }
    if(strlen($data)>10){
        $hora = substr($data,$caracteres);
        $data_arrumada = $data_arrumada." ".$hora;
    }
    return $data_arrumada;
}
function date2mysql($data){
    /*
        Formato da data:
            21/03/2018 14:47:25 -> retorna -> 2018-03-21 14:47:25
            21/03/2018 14:47 -> retorna -> 2018-03-21 14:47
            21/03/2018 -> retorna -> 2018-03-21
    */
    $data = trim($data);
    $dia = substr($data,0,2);
    $mes = substr($data,3,2);
    $ano = substr($data,6,4);
    $data_arrumada = "$ano-$mes-$dia";
    ## Para Formato com hora completa HH:mm:ss
    if(strlen($data)==19){
        $caracteres = -8;
    }
    ## Para Formato com hora parcial HH:mm
    if(strlen($data)==16){
        $caracteres = -5;
    }
    if(strlen($data)>10){
        $hora = substr($data,$caracteres);
        $data_arrumada = $data_arrumada." ".$hora;
    }
    return $data_arrumada;
}
## COMO USAR
echo "Data Formatada para gravar MySql: ".date2mysql("23/03/2018 13:13:00");
/*
   Resultado
   Data Formatada para gravar MySql: 2018-23-03 13:13:00
*/
echo "Data Formatada de Mysql para padrão Brasileiro: ".mysql2date("2018-23-03 13:13:00");
/*   Resultado
   Data Formatada de Mysql para padrão Brasileiro: 23/03/2018 13:13:00
*/
?>
Converter String para Minúsculo
Converte uma string binaria em seu respectivo codigo ascii
Data em extenso para Cabeçalho
IA Turbina o Desktop Linux enquanto distros renovam forças
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Atualizando o Fedora 42 para 43
Como saber se o seu e-mail já teve a senha vazada?
Como descobrir se a sua senha já foi vazada na internet?
Programa fora de escala na tela do pc (36)
Instalação dualboot Windows 11 e Debian 13 (0)
Eu queria adicionar a incon do wifi e deixa transparente no fluxbox no... (0)









