Data em portugues no db

Iniciado por maurov, 18 de Outubro de 2011, 11:42

tópico anterior - próximo tópico

maurov

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.

[ ]

irtigor


maurov

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:
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:
<input id="data" name="data" type="text" value="
<?php echo $data; ?>
">

[ ]

maurov

<?php// funcionaecho(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?>

irtigor

Você vai usar o str_to_date quando for necessário converter uma string (de data) pro tipo data.

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.

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

maurov

O date do PHP pareceu mais fácil, mas para armazenar data de nascimento, por exemplo
$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:

<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.
[ ]

irtigor

De cara eu vejo um %Y quando deveria ser %y. Reveja os links.

maurov

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.
[ ]