hooligans 0 Denunciar post Postado Agosto 5, 2008 galera seguinte peguei um trabalho pra terminar(pegar coisa pela metade é f*** ) enfim preciso fazer busca entre datas e tá dificil aki o código que está do antigo programador é esse ** o campo é varchar rs $data_ini = $_POST['date_ini']; $data_fim = $_POST['date_fim']; $tipo_doc = $_POST['tipo_doc']; $ab_fe = $_POST['ab_fe']; $sql = "SELECT *,str_to_date(Data_pg, '%d/%m/%Y') FROM contas_receber WHERE Data_pg between '$data_ini' and '$data_fim' and Pg = '$ab_fe' group by num_rec ORDER by Data_pg ASC"; grato pela atenção Compartilhar este post Link para o post Compartilhar em outros sites
Rafael Mussi 0 Denunciar post Postado Agosto 5, 2008 Faltou o str_to_date no WHERE.. tentae e diz se funcionou $sql = "SELECT *,str_to_date(Data_pg, '%d/%m/%Y') FROM contas_receber WHERE (str_to_date(Data_pg, '%d/%m/%Y') between '$data_ini' and '$data_fim') and Pg = '$ab_fe' group by num_rec ORDER by Data_pg ASC"; [x]´s Compartilhar este post Link para o post Compartilhar em outros sites
hooligans 0 Denunciar post Postado Agosto 5, 2008 deu isso You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Data_pg between '01/07/2008' and '05/08/2008' and Pg = '1' group by num_rec ORDE' at line 1 Compartilhar este post Link para o post Compartilhar em outros sites
Rafael Mussi 0 Denunciar post Postado Agosto 5, 2008 Coloca só $sql = "SELECT *,str_to_date(Data_pg, '%d/%m/%Y') FROM contas_receber WHERE str_to_date(Data_pg, '%d/%m/%Y') between '$data_ini' and '$data_fim'"; pra ver se é esse o problema.. outra coisa, qdo você aplica o str_do_date, o campo vira date (aaaa-mm-dd) então você tem q tratar $data_ini e $data_fim para ir no formato mysql testae e fala se funcionou [x]´s Compartilhar este post Link para o post Compartilhar em outros sites
hooligans 0 Denunciar post Postado Agosto 5, 2008 entaum naum deu ,como assim tratar os campos,explode e talz lá ? Compartilhar este post Link para o post Compartilhar em outros sites
Rafael Mussi 0 Denunciar post Postado Agosto 5, 2008 entaum naum deu ,apareceu o mesmo erro ? Qual a versão do teu mySQL ? como assim tratar os campos,explode e talz lá ?isso Compartilhar este post Link para o post Compartilhar em outros sites
hooligans 0 Denunciar post Postado Agosto 5, 2008 mysql 5 mais estranho que naum dá Compartilhar este post Link para o post Compartilhar em outros sites
Alaerte Gabriel 662 Denunciar post Postado Agosto 5, 2008 Não se compara data no formato brasileiro senhores 00/00/0000, qual o motivo para usar campo VARCHAR ? nossa... porque que não usa o correto ? Compartilhar este post Link para o post Compartilhar em outros sites
Rafael Mussi 0 Denunciar post Postado Agosto 5, 2008 Não se compara data no formato brasileiro senhores 00/00/0000, poisé, por isso do uso str_to_date no WHERE e também por isso q falei pra tratar $data_ini e $data_fim para ir no formato mysql qual o motivo para usar campo VARCHAR ? nossa... porque que não usa o correto ?pelo q entendi o hooligans pegou o sistema pra "remendar" e já tava feito desse jeito.. Mas essa query que postei não era pra dar erro.. $sql = "SELECT *,str_to_date(Data_pg, '%d/%m/%Y') FROM contas_receber WHERE str_to_date(Data_pg, '%d/%m/%Y') BETWEEN '".$data_ini."' AND '".$data_fim."'";hooligans posta o erro que tá dando só com essa query aí... em tempo, para funcionar o str_to_date, os registros (datas em varchars) do seu campo Data_pg tem que estar escritas dd/mm/yyyy Compartilhar este post Link para o post Compartilhar em outros sites
hooligans 0 Denunciar post Postado Agosto 5, 2008 Alaerte eu tbm uso o date mais como peguei o B.O. já feito naum tem como mudar entende $sql = "SELECT *,str_to_date(Data_pg, '%d/%m/%Y') FROM contas_receber WHERE Data_pg between '$data_ini' and '$data_fim' and Pg = '$ab_fe' group by num_rec ORDER by Data_pg ASC "; entaum com esse código ele naum está fazendo a consulta entre as datas se eu deixar em branco os campos aparece agora se eu colocar ai fala que naum tem nada Compartilhar este post Link para o post Compartilhar em outros sites
Rafael Mussi 0 Denunciar post Postado Agosto 5, 2008 $sql = "SELECT *,str_to_date(Data_pg, '%d/%m/%Y') FROM contas_receber WHERE (str_to_date(Data_pg, '%d/%m/%Y') between '1950-02-02' and '2008-08-05') and Pg = '$ab_fe' group by num_rec ORDER by Data_pg ASC"; coloca com esses valores, veja se sai resultado.. aproveita tbem e fala um registro var que existe hoje na tabela Data_pg [x]´s Compartilhar este post Link para o post Compartilhar em outros sites
hooligans 0 Denunciar post Postado Agosto 5, 2008 entaum amigo oq acontece é que no banco de dados como o campo é varchar ele naum pega "2008-08-05" e sim "05/08/2008" entaum mesmo assim teria que converter com o str_to_date(Data_pg, '%d/%m/%Y') ,creio eu que se naum for assim ele naum vai reconhecer como data para fazer as buscas pela data ,estou certo ou errado ? Compartilhar este post Link para o post Compartilhar em outros sites
Rafael Mussi 0 Denunciar post Postado Agosto 5, 2008 bom, no teu campo varchar Data_pg os dados estão 05/08/2008 , confere? a função str_to_date do mysql recebe dois parâmetros (string, formato_que_a_string_está) e converte para o formato date aaaa-mm-dd para conferir, basta executar essa query SELECT STR_TO_DATE('05/08/2008', '%d/%m/%Y'); e o resultado será 2008-08-05 Por isso na condição (where) da tua query, você tem q converter o campo Data_pg (pra date) e verificar se o mesmo está entre as datas (data_ini e data_fim) no formato mysql (aaaa-mm-dd). você deve estar fazendo alguma coisa errada ou então faltou você nos colocar mais informações pra solucionar teu problema. Compartilhar este post Link para o post Compartilhar em outros sites
JaNgO_ 0 Denunciar post Postado Agosto 6, 2008 tenta assim... creio que funcione... $sql = "select * from contas_receber where (str_to_date >= '${data_ini}' AND str_to_date <= '${data_fim}')"; flw Compartilhar este post Link para o post Compartilhar em outros sites
Rafael Mussi 0 Denunciar post Postado Agosto 6, 2008 tenta assim... creio que funcione... $sql = "select * from contas_receber where (str_to_date >= '${data_ini}' AND str_to_date <= '${data_fim}')"; flw str_to_date é função amigo e não um campo da tabela.. isso não vai funcionar não Compartilhar este post Link para o post Compartilhar em outros sites
JaNgO_ 0 Denunciar post Postado Agosto 6, 2008 desculpa sou meio leigo ainda... então verifica se fica melhor.. $sql = "select * from contas_receber where (data >= '${data_ini}' AND date <= '${data_fim}')"; Compartilhar este post Link para o post Compartilhar em outros sites