
Datas Com Perl-cgi E Mysql
#1
Posted 11/02/2005, 13:36
Estou guardando datas em um banco MySQL, mas sem nenhum tratamento antes de gravar, apenas pego o valor digitado no textfield e jogo no banco. Estou tendo problemas quando recupero os dados do banco e os jogo novamente em um textfiled obtenho valores errados, como 2010-10-10 e creio que o problema esteja sendo causado por falta de tratamento das datas na hora de gravar no banco e também de recuperar. Alguém sabe como resolver isso ??!!!
Um abraço,
André.
#2
Posted 11/02/2005, 15:05
Então, se gravou o valor errado, vai retornar esse valor errado.
(creio q não precisa de um tratamento pra resgatar as travas, a não ser que você grave-as em um formato que exija isso)
Na hora de inserir as datas no banco de dados você tem que gravar assim: dia-mes-ano.
Esse resultado que você mostrou eu não entendi..
flw
Site >> joaogabriel.org
CGiClube.net >> http://www.cgiclube.net
Vitória Perl Mongers >> http://vitoria.pm.org
#3
Posted 11/02/2005, 19:27
pois o mysql tem variaveis proprias para adicioanr data-hora assim vc nao precisa adicionar via perl.
sendo a data-hora do mysql as mesmas do servidor.
print join'',(reverse map{/d([a-z])d/}split/W/,'$5x6@314&60f%3i4#moo^1r2#moo^1p2')," ", pack ("B*",'01110000011001010111001001101100')," ", pack ("B*",'011011010110111101101110011010110110010101111001'), "n";
sleep 5;
E-Mails, topicos ou mensagens privadas não serão respondidas a menos que eu considere uma relevancia/necessidade na mesma.
#4
Posted 15/02/2005, 09:46
Então jgcl, eu queria guardar a data neste formato DD/MM/YYYY, mas so consigo guradar no formato YYYY/MM/DD ... se tento guardar como Dd/MM/YYYY ele quando tento recuperar a data ele me retorna um valor absurdo ... gostaria de saber uma forma de guardar no formato DD/MM/YYYY ou como tratar a data para exibir neste formato.
prinx, quanto a meneira como estou tentando gravar os dados na tabela ... tenho um campo definido como DATE na tabela e uso o comando SQL: insert into tabela (campos) values (valores) ... onde em valores colco minhas variaveis em perl que receberam os valores dos campos html.
Um abraço.
#5
Posted 15/02/2005, 11:34
Ao ives de pedir o mysql pra inserir a data do modo deles, insira vc mesmo a tada em segundos a partir de 1º de janeiro de 1970 (função time do perl).
dai pra recuperar a data...
($seg, $min, $hora) = locatime($data)
flw
Site >> joaogabriel.org
CGiClube.net >> http://www.cgiclube.net
Vitória Perl Mongers >> http://vitoria.pm.org
#6
Posted 15/02/2005, 22:10
quanto a gravação de dados eh padrao do mysql guardar a data no formato yyyy-mm-dd entao vc tem q fazer um tratamento
($ano,$mes,$dia) = split(/\-/,$data);
$data = "$dia/$mes/$ano";
usando o NOW() no mysql:
$sth = $dbh->do("INSERT INTO tabela VALUES (NOW(),'$usuario') ");
nao importa o campo, time, date, timestamp somente o NOW() adiciona os dados atuais q ele requer sem você precisar puxar do perl o processo de datas.
Eh bem simples e efeciente.
Edição feita por: prix, 15/02/2005, 22:15.
print join'',(reverse map{/d([a-z])d/}split/W/,'$5x6@314&60f%3i4#moo^1r2#moo^1p2')," ", pack ("B*",'01110000011001010111001001101100')," ", pack ("B*",'011011010110111101101110011010110110010101111001'), "n";
sleep 5;
E-Mails, topicos ou mensagens privadas não serão respondidas a menos que eu considere uma relevancia/necessidade na mesma.
#7
Posted 16/02/2005, 07:59
Primeiramente muito obrigado pela ajuda que estão me dando o jgcl e o prinx !!!
prinx, o tratamento que vc me passou para recuperar a data do banco e exibir para o usuário funcionou belezinha, mas ainda estou tendo a seguinte dificuldade:
para guardar a data não quero guardar a data atual, o usuário escolhe uma data, pois a tabela esta sendo usada para guardar cronogramas. Tentei usar a função que vc me passou mas invertida, da seguinte forma:
($dia,$mes,$ano) = split(/\-/,$data);
$data = "$ano/$mes/$dia";
porque o usuário irá digitar a data no formato dd/mm/yyyy e estou tentando passar para o formato yyyy/mm/dd para guardar no banco, mas não estou conseguindo. Guando verifico o valor da variavel depois da função ainda esta no formato dd/mm/yyyy.
Um abraço.
#8
Posted 16/02/2005, 15:01
A função funciona, só estava usando da maneira errada ... estava colcoando neste formato:
($dia,$mes,$ano) = split(/\-/,$data);
$data = "$ano/$mes/$dia";
mas devia colocar assim:
($dia,$mes,$ano) = split(/\//,$data);
$data = "$ano/$mes/$dia";
pois estou dividindo a minha data com / a invés de -
Um abraço.
#9
Posted 16/02/2005, 18:02
qual a diferença do do(comando sql) pro prepare(comando sql)?
(seria só pq o "do" retorna o número de registros afetados pelo comando?)
flw
Site >> joaogabriel.org
CGiClube.net >> http://www.cgiclube.net
Vitória Perl Mongers >> http://vitoria.pm.org
#10
Posted 19/02/2005, 09:26
Bom no mysql ele grava com - e o codigo que eu fiz era pra leitura do mysql nao para receber ela de um formulario.Boa tarde galera !!!
A função funciona, só estava usando da maneira errada ... estava colcoando neste formato:
($dia,$mes,$ano) = split(/\-/,$data);
$data = "$ano/$mes/$dia";
mas devia colocar assim:
($dia,$mes,$ano) = split(/\//,$data);
$data = "$ano/$mes/$dia";
pois estou dividindo a minha data com / a invés de -
Um abraço.
Mas eh bom ver q você soube se virar.
Quanto ah "prinx" quem eh esta pessoa ? pois eu sou prix !!
o split eh uma forma muito boa para separar dados.
Qualquer duvida estamos ai.
PS: se de algum erro na hora de gravar no mysql tente substituir a / por - que deve resolver
print join'',(reverse map{/d([a-z])d/}split/W/,'$5x6@314&60f%3i4#moo^1r2#moo^1p2')," ", pack ("B*",'01110000011001010111001001101100')," ", pack ("B*",'011011010110111101101110011010110110010101111001'), "n";
sleep 5;
E-Mails, topicos ou mensagens privadas não serão respondidas a menos que eu considere uma relevancia/necessidade na mesma.
#11
Posted 21/02/2005, 14:14
Realmente na hora de gravar a data no banco tenho que usar o / e quando vou recuperar o - para que a função funcione !!!
Quanto a diferença do do para o prepare realmente eu não sei mas utilizo o prepare por ser a maneira como aprendi.
Um abraço !!!
1 user(s) are reading this topic
0 membro(s), 1 visitante(s) e 0 membros anônimo(s)