Nimaro 0 Denunciar post Postado Dezembro 31, 2009 Ola a todos, Tenho um sistema de mensagens que me armazena na BD as mensagens que os utilizadores escrevem. Mas do que já me apercebi em MySql a data fica desta forma: "AAAA-MM-DD" E no meu sistema utilizo um calendario .js, para o utilizador escolher 1 data mais facilmente. O problema está que este calendario coloca a data desta forma: "DD-MM-AAAA". E eu posso tentar alterar o JS, mas não será facil porque tem varias dependencias. O que gostava de vos perguntar era se nao dá para alterar a o formato da minha variavel que recebe a data para poder inserir na BD tranquilamente, ou seja, passar de "DD-MM-AAAA" para "AAAA-MM-DD", e so ai enviar para a BD. Agradeço uma ajuda nisto, Obrigado! Compartilhar este post Link para o post Compartilhar em outros sites
Dee 0 Denunciar post Postado Dezembro 31, 2009 Não sei se no MYSQL funciona essa função, mas no SQLServer funciona. INSERT INTO TABELA(DATA) VALUES (CONVERT(DATETIME,'2009-12-01',103)) Compartilhar este post Link para o post Compartilhar em outros sites
Alexandre.live 0 Denunciar post Postado Dezembro 31, 2009 Bom dia você pode utilizar a função do mysql date_format(), aqui vai uma explicação completa sobre ela: Date_format() Compartilhar este post Link para o post Compartilhar em outros sites
João Batista Neto 448 Denunciar post Postado Dezembro 31, 2009 passar de "DD-MM-AAAA" para "AAAA-MM-DD", e so ai enviar para a BD. /** * Converte uma data entre dois formatos * @param string $dt A data que será convertida * @param string $fin O formato original * @param string $fout O formato final * @return string */ function &date_convert( $dt , $fin = '%d-%m-%Y' , $fout = '%Y-%m-%d' ){ $dp = strptime( $dt , $fin ); $do = strftime( $fout , mktime( $dp[ 'tm_hour' ], $dp[ 'tm_min' ], $dp[ 'tm_sec' ], $dp[ 'tm_mon' ] + 1, $dp[ 'tm_mday' ], $dp[ 'tm_year' ] + 1900 ) ); return $do; } Utilize a função acima para isso: echo date_convert( '31-12-2009' ); A saída será: 2009-31-12 Se a data de entrada estiver em um formato diferente, basta especificá-lo: echo date_convert( '31/12/2009' , '%d/%m/%Y' ); Veja o manual da função strftime para saber quais são os formatos para a entrada e para a saída: http://br.php.net/manual/en/function.strftime.php Compartilhar este post Link para o post Compartilhar em outros sites
Nimaro 0 Denunciar post Postado Dezembro 31, 2009 hmmm... Eu tenho desta forma: $data_1= ($_POST['data_1']); <--------- Recebe a data query = "INSERT INTO mensagens (id_medico, id_paciente, id_utilizador, mensagem, data, hora, assunto) VALUES ('$id_medico', '$id_pacient', '$id_utilizador', '$mensagem', '$data_1', '$hora', '$assunto')"; E dizes para colocar algo como isto? :/ query = "INSERT INTO mensagens (id_medico, id_paciente, id_utilizador, mensagem, data, hora, assunto) VALUES ('$id_medico', '$id_pacient', '$id_utilizador', '$mensagem', CONVERT('$data_1','2009-12-01',103), '$hora', '$assunto')"; Compartilhar este post Link para o post Compartilhar em outros sites
Dee 0 Denunciar post Postado Dezembro 31, 2009 Nao, assim: CONVERT(datetime, '$data_1',103) É a variável que você quer no Convert. Mas não sei se vai funcionar por ser MYSQL, você vai ter que usar o Date_Format() como o outro User disse. Compartilhar este post Link para o post Compartilhar em outros sites
Nimaro 0 Denunciar post Postado Dezembro 31, 2009 bem... João Batista Neto, estou a tentar fazer pelo teu sistema, porque me parece simples e funcional. Mas tentei implementar no meu projecto e ele da-me 1 erro na função "strptime( $dt , $fin );" Erro: Fatal error: Call to undefined function strptime() in C:\wamp\www\Secretel\insere_mensagens.php on line 78 Consegues ajudar no motivo deste erro? Compartilhar este post Link para o post Compartilhar em outros sites
Nimaro 0 Denunciar post Postado Dezembro 31, 2009 Estou agora a tentar fazer pela funcao date_format(), que ja estive a ler melhor, e do que li pareceu bem simples ^^ Mas estou a ter alguns problemas, penso eu de codigo :/ Vou colocar aqui tudo o que diz respeito ao codigo da data, para vos ajudar no rastriamento do problema, espero :) Input Box da Data e respectiva chamado do .js do calendario <tr><td>Data:</td> [b][i]<td><input type="date" name="data_1" id="data_1" size="7" maxlength="10" value="<?php echo $data_curr;?>" /> </td></tr> [/i][/b] <script type="text/javascript"> $('#data_1').focus(function(){ $(this).calendario({ target :'#data_1', dateDefault:$(this).val() }); }); </script> Despois para a inserção na BD tentei fazer desta forma: $data_1= ($_POST['data_1']); DATE_FORMAT('$data_1','%Y/%d/%m'); E da-me este erro: Warning: date_format() expects parameter 1 to be DateTime, string given in C:\wamp\www\Secretel\insere_mensagens.php on line 86 Do que entendi o data_1 deveria de ser data e time ao mesmo tempo :/ Conseguem dar-me uma ajuda de como ultrapasso isto??? Compartilhar este post Link para o post Compartilhar em outros sites
JRRC 0 Denunciar post Postado Dezembro 31, 2009 Uma forma facil e simples de fazer isso é com o explode Faz o seguinte, vou usar uma variavel chama $data_imasters para enviar para o banco e voce usa a sua. $data_imasters = $_GET["data_imasters"]; $data_imasters = explode("/","$data_imasters"); $data_imasters = "$data_imasters[2]-$data_imasters[1]-$data_imasters[0]"; É claro qeu voce vai colocar isso em seu arquivo onde vai enviar para o banco. Uso isso nas minhas datas e funcionam de boa! Compartilhar este post Link para o post Compartilhar em outros sites
Nimaro 0 Denunciar post Postado Janeiro 4, 2010 funcionou mesmo :), Mas teve de ser algo deste genero: $data_1= ($_POST['data_1']); $data_imasters = ($_POST['data_1']); $data_imasters = explode("/","$data_1"); $data_imasters = "$data_1[6]$data_1[7]$data_1[8]$data_1[9]-$data_1[3]$data_1[4]-$data_1[0]$data_1[1]"; Obrigado mais 1 vez ;) Compartilhar este post Link para o post Compartilhar em outros sites