Autor Tópico: Data em portugues no db  (Lida 3944 vezes)

Offline maurov

  • Usuário Ubuntu
  • *
  • Mensagens: 446
    • Ver perfil
Data em portugues no db
« Online: 18 de Outubro de 2011, 11:42 »
apache-php-mysql-phpmyadmin

Só consigo salvar data no fomato 2011-10-18.
Pelo phpmyadmin mostra dateformat yyyy-mm-dd, mas não tem opção de alterar.

Iniciei este tópico em servidores, mas não vingou. Trago para cá em busca de ajuda.

[ ]

Offline irtigor

  • Equipe Ubuntu
  • Usuário Ubuntu
  • *****
  • Mensagens: 4.344
  • Delete, delete, delete!
    • Ver perfil
Re: Data em portugues no db
« Resposta #1 Online: 18 de Outubro de 2011, 23:12 »

Offline maurov

  • Usuário Ubuntu
  • *
  • Mensagens: 446
    • Ver perfil
Re: Data em portugues no db
« Resposta #2 Online: 19 de Outubro de 2011, 10:15 »
a partir das leituras, resumindo:
- O DB vai armazenar a data inteira, e no formato yyyy-mm-dd.
- STR_TO_DATE me pareceu ser mais interessante do que date_format pois mantém o dado inalterado no DB e muda apenas a apresentação.

A dúvida é  onde exatamente fazer a query com o:
Código: [Selecionar]
SELECT STR_TO_DATE('19-Oct-11 14:00:00 AM', '%d-%b-%y %h:%i:%S %p') AS data;
para a variavel $data, tendo:
Código: [Selecionar]
<input id="data" name="data" type="text" value="<?php echo $data?>">
[ ]

Offline maurov

  • Usuário Ubuntu
  • *
  • Mensagens: 446
    • Ver perfil
Re: Data em portugues no db
« Resposta #3 Online: 19 de Outubro de 2011, 15:32 »
Código: [Selecionar]
<?php
// funciona
echo(strftime("%b %d %Y %X"mktime(20,0,0,12,31,98))."<br />");

//nao funciona
$date='20111019';
$query "SELECT STR_TO_DATE('$date','%d,%m,%Y')";
$result mysqli_query($dbc,$query) or die ('Nao deu result do str_to_date<br>' mysqli_error($dbc));
while (
$row mysqli_fetch_array($result)) {
  
$date $row['date'];
// fecha o while
    
mysqli_close
?>

Offline irtigor

  • Equipe Ubuntu
  • Usuário Ubuntu
  • *****
  • Mensagens: 4.344
  • Delete, delete, delete!
    • Ver perfil
Re: Data em portugues no db
« Resposta #4 Online: 19 de Outubro de 2011, 19:28 »
Você vai usar o str_to_date quando for necessário converter uma string (de data) pro tipo data.
Código: [Selecionar]
SELECT STR_TO_DATE('19/10/2011', '%d/%m/%Y'); //retorna 2011-10-19
O date_format é o inverso, você possui um tipo data (yyyy-mm-dd) mas precisa mostrar em outro formato.
Código: [Selecionar]
SELECT DATE_FORMAT('2011-10-19', '%d/%m/%Y'); //retorna 19/10/2011

Dá pra fazer essas conversões usando a linguagem de programação também... php:
http://www.php.net/manual/en/function.date.php
http://www.php.net/manual/en/datetime.format.php

Offline maurov

  • Usuário Ubuntu
  • *
  • Mensagens: 446
    • Ver perfil
Re: Data em portugues no db
« Resposta #5 Online: 20 de Outubro de 2011, 10:03 »
O date do PHP pareceu mais fácil, mas para armazenar data de nascimento, por exemplo
Código: [Selecionar]
$datanasc = date("m.d.y");
echo $datanasc;
sempre dá a data atual. Então, para armazenar datas no DB, voltamos a date_format e str_to_date.

Se eu tivesse uma variável com data de vencimento, para armazená-la e apresentá-la, tentei:
Código: [Selecionar]
<input id="datavenc" name="datavenc" type="text" value="<?php
$query 
"SELECT STR_TO_DATE('$datavenc', '%d/%m/%Y')";
$result mysqli_query($dbc,$query) or die ('Nao deu result do str_to_date<br>' mysqli_error($dbc));
while (
$row mysqli_fetch_array($result)) {
  
$datavenc $row['datavenc'];
}
echo 
$datavenc;
?>

">
Digitei no campo 20/10/11 mas salvou no DB como 2020-10-11, além de não apresentar no input após salvo. Ainda falta algo.
[ ]

Offline irtigor

  • Equipe Ubuntu
  • Usuário Ubuntu
  • *****
  • Mensagens: 4.344
  • Delete, delete, delete!
    • Ver perfil
Re: Data em portugues no db
« Resposta #6 Online: 20 de Outubro de 2011, 23:13 »
De cara eu vejo um %Y quando deveria ser %y. Reveja os links.

Offline maurov

  • Usuário Ubuntu
  • *
  • Mensagens: 446
    • Ver perfil
Re: Data em portugues no db
« Resposta #7 Online: 21 de Outubro de 2011, 12:54 »
Revistos.
Troque para %y. Hoje é 21-10-11.
Vejo pelo phpmyadmin que a data ficou salva como 2021-10-11, além de não mostrar no campo input após o submit.
[ ]