Jump to content


Photo

Obter A Data A Partir Do Mysql


  • Faça o login para participar
16 replies to this topic

#1 André Milaré

André Milaré

    Novato no fórum

  • Usuários
  • 22 posts
  • Sexo:Não informado

Posted 05/11/2007, 12:02

Pessoal, algo muito intrigante: Estou fazendo um SELECT no banco, tipo "SELECT nome, end, datanascimento FROM CLIENTE"

O estranho é que a data só retorna 31/12/1969

Sendo que se uso o Query Browser a data está certinha, mas basta carregar no PHP que exibe como 31/12/1969

Alguém tem uma luz?

[]'s André Milaré

#2 Boxer

Boxer

    Ativo

  • Usuários
  • 304 posts
  • Sexo:Masculino
  • Localidade:São Paulo

Posted 05/11/2007, 12:18

Olá Amigo.

Qual a configuração do campo, no BD? DATE? DATETIME?
Mostre o script que monta a data pra gente.

(y)

[]´s
"O único lugar, no mundo, onde o sucesso vem antes do trabalho, é no dicionário"

#3 hostdesigner

hostdesigner

    Super Veterano

  • Usuários
  • 2910 posts
  • Sexo:Masculino
  • Localidade:Quirinópolis-GO
  • Interesses:Programação, Mulheres, Diversão, Mulheres, Música, Mulheres, Meu Carro, Mais mulheres, Internet, Outras Mulheres, Quase por último PAZ e por ultimo Outras Váááárias Mulheres...

Posted 06/11/2007, 20:02

1969

Não me lembro bem, mas, acho que o formato unix começou a partir deste ano ai, o que causa isso normalmente é a ordem dos valores na hora de gravar na tabela...

Mas se na tabela está certo então, você deve estar usando algum script que esta recebendo os valores erroneamente e daí ele retorna a data errada.

Falopa!

#4 Paulo André

Paulo André

    Why so serious?

  • Ex-Admins
  • 5114 posts
  • Sexo:Masculino
  • Localidade:Belo Horizonte - MG
  • Interesses:O.Q.F.J.?

Posted 07/11/2007, 02:50

Você provavelmente está utilizando a função date() e o segundo parâmetro está incorreto, que deve ser um número inteiro representando um formato UNIX timestamp. ;)

Até mais
Paulo André G Rodrigues,
ex-administrador Fórum WMO.


www.CanalDev.com.br

#5 cassiano designer

cassiano designer

    Normal

  • Usuários
  • 108 posts
  • Sexo:Masculino
  • Localidade:São Mateus - ES

Posted 07/11/2007, 09:11

no BD ela vai ficar assim:
xxxx - xx - xx

você tem que converter pra que seja exibida no formato brasileiro:
xx - xx - xxxx

##### "O seu maior desafio é se aprimorar para ser... você mesmo!" #####
CASSIANODESIGNER.COM - Desenvolvimento Web

#6 André Milaré

André Milaré

    Novato no fórum

  • Usuários
  • 22 posts
  • Sexo:Não informado

Posted 07/11/2007, 10:01

No banco está como DataCompra: DATE

Eu guardo na variavel $strDataCompra o que é informado pelo usuário. Quando mando gravar eu tentei a função
date("Y/m/d", $strDataCompra)
daí já tinha visto que grava no banco 1969-31-12, então abandonei a função date() e simplesmente gravei direto, daí deu certo.

E ao recuperar a informação (como o Cassiano comentou) vem com AAAA-MM-DD e quando utilizo a função de formatação, aparece o bendito 31/12/1969 -formatado com date()
Eu venho do ASP e tem diversas funções para formatar... o PHP eu vi date() e date_format(), porém o date_format() não funciona e estou usando PHP 5.1 o que fiz (mas não acho certo) foi concatenar na mão do formato AAAA-MM-DD para DD/MM/AAAA.

Existe alguma maneira mais simples de gravar e ler datas no formato que queremos sem usar função pessoal? Pois corremos o perigo de gravar uma data do tipo 12/10/2007 e ao recuperar teremos o mês de dezembro...

Obrigado a todos

[]'s André Milaré

Edição feita por: André Milaré, 07/11/2007, 10:03.


#7 Dudu

Dudu

    Viva la vida

  • Usuários
  • 1437 posts
  • Sexo:Masculino
  • Localidade:Uberlândia - MG
  • Interesses:PHP

Posted 07/11/2007, 14:17

Amigo, se seu campo é DATE, ele grava assim: YYYY-MM-DD Não é?
Para formatar, é só usar na query o DATE_FORMAT();

Exemplo:

SELECT *, DATE_FORMAT(data, '%d/%m/%Y') AS data FROM cliente



Utilização:

$sql = mysql_query("SELECT *, DATE_FORMAT(data, '%d/%m/%Y') AS data FROM cliente") or die(mysql_error());
$c = mysql_fetch_array($sql);

echo $c['data'];
Para maiores informações:
http://dev.mysql.com...ion_date-format

Até mais ^_^

Edição feita por: _Dudu_1533, 07/11/2007, 14:22.

Fórum WMO - Equipe de Desenvolvimento / Banco de Dados - Moderador


Twitter: HostCheap


#8 André Milaré

André Milaré

    Novato no fórum

  • Usuários
  • 22 posts
  • Sexo:Não informado

Posted 08/11/2007, 08:54

Dudu, obrigado pela dica!

Mas apenas para saber e encerrar o tópico, o PHP não tem função para formatação de datas? Pois o que está sugerido é que a data tem que vir formatada a partir da função do MySQL e não do PHP, confere?

Obrigado pela ajuda e colaboração de todos!

[]'s André Milaré

PS: O comando date_format no MySQL funcionou!

#9 Crab

Crab

    Da paz, mas preparado para Guerra

  • Ex-Admins
  • 2521 posts
  • Sexo:Masculino
  • Localidade:Florianópolis - SC
  • Interesses:Desenvolvimento Gráfico e Web.

Posted 08/11/2007, 09:17

"Tudo que você queria saber sobre datas no PHP mas tinha preguiç... ops... medo de pesquisar no manual"

:D brincadeira

Da uma olhada nesse link aí

(y)Até mais

#10 André Milaré

André Milaré

    Novato no fórum

  • Usuários
  • 22 posts
  • Sexo:Não informado

Posted 08/11/2007, 16:38

Então Crab, todos meus problemas começaram aqui!!!!


para formatar uma data HOJE, blz! funciona que nem um reloginho
$today = date("F j, Y, g:i a");				 // March 10, 2001, 5:16 pm
$today = date("m.d.y");						 // 03.10.01
$today = date("j, n, Y");					   // 10, 3, 2001
$today = date("Ymd");						   // 20010310
$today = date('h-i-s, j-m-y, it is w Day z ');  // 05-16-17, 10-03-01, 1631 1618 6 Fripm01
$today = date('\i\t \i\s \t\h\e jS \d\a\y.');   // It is the 10th day.
$today = date("D M j G:i:s T Y");			   // Sat Mar 10 15:16:08 MST 2001
$today = date('H:m:s \m \i\s\ \m\o\n\t\h');	 // 17:03:17 m is month
$today = date("H:i:s");						 // 17:16:17

Mas se vc JÁ tem a bendita data, tipo:

$strSQL = "SELECT DataCompra FROM tabproduto ";

$strRecordSet = mysql_query($strSQL, $strConexao) or die("Ocorreu um erro ao acessar o banco de dados. Erro: <br>".mysql_error());
$Registro = mysql_fetch_array($strRecordSet);

// Guardar a data
$strDataCompra = $Registro["DataCompra"];

// Aqui o bicho pega
echo date("d/m/Y", $strDataCompra);

Sabe o que aparece? 31/12/1969

Não foi preguiça de pesquisar não, até com date_format() eu tentei, mas só funcionou mesmo no MySQL...
Por isso que eu quero saber: TEM ALGUM COMANDO PHP QUE FORMATE DATA? rsrs

:wacko:

[]'s André Milaré

#11 hostdesigner

hostdesigner

    Super Veterano

  • Usuários
  • 2910 posts
  • Sexo:Masculino
  • Localidade:Quirinópolis-GO
  • Interesses:Programação, Mulheres, Diversão, Mulheres, Música, Mulheres, Meu Carro, Mais mulheres, Internet, Outras Mulheres, Quase por último PAZ e por ultimo Outras Váááárias Mulheres...

Posted 08/11/2007, 16:44

@ ANDRÉ MOLARÉ
Estou achando que seu problema é literalmente mais em cima...

Quando você retorna a data sem tentar formata-la como é que ela aparece?

Falopa!

#12 André Milaré

André Milaré

    Novato no fórum

  • Usuários
  • 22 posts
  • Sexo:Não informado

Posted 08/11/2007, 16:49

Sem formatar vem YYYY-MM-DD (2007-10-05)

Molaré forçou a amizade...rsrs

[]'s André Milaré

Edição feita por: André Milaré, 08/11/2007, 16:50.


#13 hostdesigner

hostdesigner

    Super Veterano

  • Usuários
  • 2910 posts
  • Sexo:Masculino
  • Localidade:Quirinópolis-GO
  • Interesses:Programação, Mulheres, Diversão, Mulheres, Música, Mulheres, Meu Carro, Mais mulheres, Internet, Outras Mulheres, Quase por último PAZ e por ultimo Outras Váááárias Mulheres...

Posted 08/11/2007, 17:02

@ ANDRÉ MILARÉ

Molaré forçou a amizade...rsrs

Quem disse que somos amigos? :P

Imagino que você deve estar formatando a data na consulta e depois está tentando formata-la usando a função date() se for isso é só remover a função date() do teu código.

Se não for o caso anterior, então posso afirmar com toda certeza que você alterou alguma configuração do servidor, como por exemplo set_locale() ou alguma parente dela :D, enfim, alterar as configurações "NUM PODE..."

Ainda assim dá pra você formatar a data diretamente no mysql.
http://forum.wmonlin...&...st&p=880498

Falopa!

#14 maurocruz

maurocruz

    Novato no fórum

  • Usuários
  • 19 posts
  • Sexo:Masculino
  • Localidade:Pirenopolis

Posted 08/11/2007, 17:45

Entendo o que você está passando, já bati a cabeça com essa coisa também, até que resolvi não perder muito tempo e fiz uma funçãozinha:

function data($data){
	$data=substr($data,8,2).'/'.substr($data,5,2).'/'.substr($data,0,4);
	return $data;
}

Visite Pirenópolis
www.pirenopolis.tur.br - O Portal de Turismo de Pirenópolis
Comida típica goiana é no www.arrozcompequi.com.br

#15 sk15

sk15

    Super Veterano

  • Usuários
  • 2071 posts
  • Sexo:Masculino
  • Localidade:SP - SP

Posted 08/11/2007, 18:10

Acho que você não está entendendo uma coisa simples ....
A forma com que você grava a data no banco determina a forma com qual você vai exibir.

Logo se você gravar a data com campo do tipo "DATE" a função "date()" não vai servir pois ela trabalha com TimeStamp ...

* TimeStamp = é soma dos segundos desde o dia em que o formato unix foi ativado ou seja "31/12/1969" até os dias atuais.




0 user(s) are reading this topic

0 membro(s), 0 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq