m4rkynh0z 0 Denunciar post Postado Julho 6, 2007 Boa Dia a todosto tendo um problema aqui no mysql ,preciso fazer um filtro por dataData Inicio e Data Fimmas tenho um problema no banco de dados quando criaram as tabelas colocaram varchar ao inves de DateAlguem pode me ajudar como faço preciso mais ou menos dissoSELECT * FROM TABELAWHERE DATAINICIO > $XXX1AND DATAFIM < $XXX2 Compartilhar este post Link para o post Compartilhar em outros sites
cassitos 2 Denunciar post Postado Julho 6, 2007 Apesar do campo estar varchar, em que formato estão gravando as datas?Depedendo do formato, seria interessante fazer um cast ou algo do tipo na consulta.Mas p/ dizer a conversão ideal, posta ae o formato das datas nestes campos varchar.flw Compartilhar este post Link para o post Compartilhar em outros sites
m4rkynh0z 0 Denunciar post Postado Julho 6, 2007 SERIA ASSIMFILTRO IRIA PEGAR A DATA NORMAL TIPO NO INPUT TERIA 13/06/2007E NO BANCO TEM UM REGISTRO DATA TO TIPO VARCHAR COM O VALOR DE 12/07/2007COMO IREI PASSAR PRO BANCOSQL:SELECT * FROM PROJETOSWHERE DATA_INICIAL > '12/07/2007'NAO SEI SE FOI BEM CLARO, SERIA ISSO QUE EU PRECISO PODER TRATAR UM VARCHAR COMO DATE. Compartilhar este post Link para o post Compartilhar em outros sites
cassitos 2 Denunciar post Postado Julho 6, 2007 OK!Bom, como no banco as datas estão no formato dd/mm/yyyy e o padrão de datas do mysql é yyyy-mm-dd, então você pode utilizar a função STR_TO_DATE do mysql.Esta função retorna um valor no formato date do mysql, bastando você especificar o formato do conteúdo no primeiro parâmetro.Se puder, crie uma tabela de teste, como abaixo: CREATE TABLE `datas` ( `CODIGO` int(11) NOT NULL auto_increment, `CAMPO_DATAINICIO` varchar(10) NOT NULL, `CAMPO_DATAFIM` varchar(10) NOT NULL, PRIMARY KEY (`CODIGO`) ) ENGINE=MyISAME inlcua alguns registros no formato dd/mm/yyyy.Depois execute esta consulta:SELECT CODIGO,STR_TO_DATE(CAMPO_DATAINICIO,'%d/%m/%Y') AS NOVADATAINICIO,STR_TO_DATE(CAMPO_DATAFIM,'%d/%m/%Y') AS NOVADATAFIMFROM datasou esta (está utilizando a função no WHERE):SELECT *FROM datasWHERESTR_TO_DATE(CAMPO_DATAINICIO,'%d/%m/%Y') >= STR_TO_DATE('01/05/2007','%d/%m/%Y') ANDSTR_TO_DATE(CAMPO_DATAFIM,'%d/%m/%Y') <= STR_TO_DATE('06/07/2007','%d/%m/%Y')A sua consulta ficaria algo assim:SELECT * FROM TABELAWHERE STR_TO_DATE(DATAINICIO,'%d/%m/%Y') > STR_TO_DATE($XXX1,'%d/%m/%Y')AND STR_TO_DATE(DATAFIM,'%d/%m/%Y') < STR_TO_DATE($XXX2,'%d/%m/%Y')Desta forma não precisa alterar estrutura nem dados da tabela, nem o conteúdo das variáveis $XXX1 e $XXX2.Qquer coisa estamos ae.OBS: esta função está disponível a partir da versão 4.1.1 do mysql.flw Compartilhar este post Link para o post Compartilhar em outros sites
m4rkynh0z 0 Denunciar post Postado Julho 6, 2007 cara vlw, tava olhando manual do mysql e vi essa funcao e funcionou, mesmo assim valew pela ajuda Compartilhar este post Link para o post Compartilhar em outros sites