Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

André Wielki

Campo type date no mysql - FORMATO 00/00/0000

Recommended Posts

Olá, eu sei que quando seto o type de um campo para date, fica no formato 00-00-0000,

Mas eu tenho um banco de dados com o campo das datas no type varchar no formato 00/00/0000, e preciso trocar o type dele para o date, acontece que quando eu troco para o date, o formato força ser 00-00-0000.

 

Eu gostaria de uma solução para armazenar dados no formato 00/00/0000 em um campo de type date no banco de dados mysql.

 

Se não for possivel armazenar nesse formato, então uma solução para que armazene normalmente 00-00-0000 mas na hora de exibir os dados, ele altere o formato para 00/00/0000.

 

Qual seria o solução?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para salvar dê um implode e altere o formato da data

<?php $dataentregafinal = implode( '-', array_reverse( explode( '/', $_POST['dataentrega'] ) ) ); // 12/02/2012 ?>

 

E para exibir inverta:

 

 

<?php
$source =  $n->data  ; 
$date = new DateTime($source);
echo $date->format('d/m/Y'); 
?>
 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você pode trazer os dados formatados com SQL, testa ae

select date_format('2014-07-10 21:06:00', '%d/%m/%Y') as data;

Documentação

http://dev.mysql.com/doc/refman/5.6/en/date-and-time-functions.html#function_date-format

Compartilhar este post


Link para o post
Compartilhar em outros sites

<?php
$chave=$_GET["id"];
$sql = $conexao->query("SELECT * FROM solicitacoes WHERE chave=$chave"); 
while($linha =  $sql->fetch_array()) {
$source =  $linha['aberto']->data; $date = new DateTime($source); echo $date->format('d/m/Y');
}
?>

Olá Celino Neto,

Testei o de exibir com o código a cima e não deu muito certo, da uma olhada como eu fiz.

 

O Teste foi feito a partir de um campo no banco de dados vindo no formato 0000-00-00 para formatar para 00/00/0000, ele retornou esse erro e embaixo do erro mostrou não a data correta que deveria formatar, e sim a data de hoje formatada.

 

O Campo do banco de dados era um varchar com o valor: 2004-12-10

 

 

ERRO:

Notice: Trying to get property of non-object in /srv/disk10/1699450/www/rmacellsystem.tk/page/detalhes.php on line 93

11/07/2014

 

 

 

Linha 93:

$source =  $linha['aberto']->data; $date = new DateTime($source); echo $date->format('d/m/Y');

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Marcos Xavier,

 

Você pode trazer os dados formatados com SQL, testa ae

select date_format('2014-07-10 21:06:00', '%d/%m/%Y') as data;

Documentação

http://dev.mysql.com/doc/refman/5.6/en/date-and-time-functions.html#function_date-format

 

Marcos, não entendi como eu aplico no meu código.

 

Sabendo-se que minha tabela é: solicitacoes

Que meu campo no formato de data 0000-00-00 é: finalizado

 

Como faço para usar o select pra exibir esse campo de data chamado finalizado, no formato 00/00/0000 ?

 

Segue meu código abaixo:

<?php
$chave=$_GET["id"];
$sql = $conexao->query("SELECT * FROM solicitacoes WHERE chave=$chave ORDER BY finalizado DESC"); 
while($linha =  $sql->fetch_array()) {
echo $linha['finalizado'];
}
?>

Esse código esta me retornando a data que contém no campo: finalizado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dica. Se você precisa resgatar apenas dados de um campo, não utilize select full (select *), seu servidor de banco de dados poderá ter uma redução de desempenho.

No exemplo que dei seria algo assim:

SELECT date_format(finalizado', '%d/%m/%Y') finalizado FROM solicitacoes WHERE chave=$chave ORDER BY finalizado DESC
//select date_format(campo, '%d/%m/%Y') as apelido-do-campo;

Não deixe de conferir a documentação para ver mais possibilidades.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Altera o campo no banco de dados de date para varchar(10), e quando você for inserir no banco de dados, utilize a função date do php:

 

<?php
date("d/m/Y");
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

você precisa salvar a data ATUAL (do dia da inserção na db) ou um dia especifico ?

 

Se for ATUAL, mude sua coluna data na db para DATE

e salve como o victor falou:

 

 

<?php $datahoje = date("d/m/Y"); ?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dica. Se você precisa resgatar apenas dados de um campo, não utilize select full (select *), seu servidor de banco de dados poderá ter uma redução de desempenho.

No exemplo que dei seria algo assim:

SELECT date_format(finalizado', '%d/%m/%Y') finalizado FROM solicitacoes WHERE chave=$chave ORDER BY finalizado DESC
//select date_format(campo, '%d/%m/%Y') as apelido-do-campo;

Não deixe de conferir a documentação para ver mais possibilidades.

 

OLÁ MARCOS XAVIER!

OK MAS PODE ME AJUDAR EM MAIS UMA COISINHA ?

 

Eu vou testar agora seu código, mas nesse caso especifico eu realmente preciso pegar todos campos * e não só o finalizado, vejo que ali no lugar do meu * voce botou o date format, agora nao entendi como eu faco para manter o date format no finalizado puxando do select todos os campos *

Como seria? eu li a doumentação, desculpa a ignorancia

 

---------------------------------------

 

Altera o campo no banco de dados de date para varchar(10), e quando você for inserir no banco de dados, utilize a função date do php:

 

<?php
date("d/m/Y");
?>

 

 

Olá Victor, obrigado mas não é isso que eu preciso, isso eu ja sei fazer, é o que os dois colegas la de cima falaram, eu so estou com problema agora pra usar o codigo deles.

 

---------------------------------------

 

 

você precisa salvar a data ATUAL (do dia da inserção na db) ou um dia especifico ?

 

Se for ATUAL, mude sua coluna data na db para DATE

e salve como o victor falou:

<?php $datahoje = date("d/m/Y"); ?>

 

Olá Celino Neto, obrigado mas não é isso que eu preciso, na verdade o que eu preciso é exatamente o que voce me respondeu lá em cima.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tentei:

    $sql = $conexao->query("SELECT date_format('finalizado', '%d/%m/%Y') finalizado FROM solicitacoes WHERE status='finalizado' ORDER BY finalizado DESC");
    //select date_format(campo, '%d/%m/%Y') as apelido-do-campo;
    //$sql = $conexao->query("SELECT * FROM solicitacoes WHERE status='Finalizado' ORDER BY chave DESC LIMIT 400");
    while($linha =  $sql->fetch_array()) {
    echo $linha['finalizado'];
    }

E tambem tentei:

    $sql = $conexao->query("SELECT date_format('finalizado', '%d/%m/%Y') as finalizado FROM solicitacoes WHERE status='finalizado' ORDER BY finalizado DESC");
    //select date_format(campo, '%d/%m/%Y') as apelido-do-campo;
    //$sql = $conexao->query("SELECT * FROM solicitacoes WHERE status='Finalizado' ORDER BY chave DESC LIMIT 400");
    while($linha =  $sql->fetch_array()) {
    echo $linha['finalizado'];
    }

Nao deu erro mas tambem nao mostrou nada na minha tela


CONSEGUI, ERA O VARCHAR QUE NAO TAVA DANDO PRA FORMATAR

Compartilhar este post


Link para o post
Compartilhar em outros sites

Será que alguem pode dar um help ????

 

Sou novato em php, comprei uma agenda na codecanyon, já consegui traduzir 98% porem ainda aparece nome de data "mês/dia" em inglês, já procurei com o notpad ++ e não encontrei mais nenhuma data em inglês......de onde ele puxa o nome das datas em inglês ???? como corrijo isso ???

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

OLÁ MARCOS XAVIER!

OK MAS PODE ME AJUDAR EM MAIS UMA COISINHA ?

 

Eu vou testar agora seu código, mas nesse caso especifico eu realmente preciso pegar todos campos * e não só o finalizado, vejo que ali no lugar do meu * voce botou o date format, agora nao entendi como eu faco para manter o date format no finalizado puxando do select todos os campos *

Como seria? eu li a doumentação, desculpa a ignorancia

 

Você pode fazer assim:

SELECT *,date_format(finalizado', '%d/%m/%Y') finalizado FROM solicitacoes WHERE chave=$chave ORDER BY finalizado DESC

Porém se você testar no console o no Pphmyadmin(por exemplo), verá que o campo finalizado é exibido 2 vezes. Para isso não ocorrer você pode determinar quais campos você deseja resgatar e inclusive dar apelidos(aliases) aos campos

 

SELECT date_format(finalizado', '%d/%m/%Y') as finalizado ,campoX as 'apelidoX', campoY as apelidoY FROM solicitacoes WHERE chave=$chave ORDER BY finalizado DESC

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.