Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Delanno Baena

Consulta entre periodo de datas onde o campo data é do tipo varchar

Recommended Posts

Bom dia pessoal!Tenho um sistema (que não foi criado por mim) que esta rodando a dois anos, que necessita de um novo tipo de consulta.Essa consulta seria entre períodos de datas(ex: de 01/01/2004 a 21/12/2005), o problema é que o campo da tabela que quarda as datas é do tipo varchar e não do tipo date ou date time, tentei mudar o tipo de dado no banco mais feito isso o mysql zera o campo em toda tabela.Fico grato se alguém puder me ajudar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Delanno Baena, As data armazenasdas na tabela estão no formato : YYYY/MM/DD (Default do Mysql) ?, pois se não estiverem quando você converter a data será inválida e o mysql vai zerar mesmo.Um abraço...t+

Compartilhar este post


Link para o post
Compartilhar em outros sites

gambiarras que já vi funcionando.. porém, não é a melhor forma...

 

vou falar a regra, ai você implementa, beleza?

 

data_A: "01/02/2006"

data_B: "03/04/2006"

 

se a data tiver padronizada... dd/mm/yyyy.... mas são gambis... nada melhor seria você reformatar sua tabela para o formato YYYY-MM-DD e converter a coluna

 

--GAMBIARRA

CREATE TABLE TMP_DATA(data VARCHAR(10));INSERT INTO TMP_DATA VALUES('01/01/2006');INSERT INTO TMP_DATA VALUES('02/01/2006');INSERT INTO TMP_DATA VALUES('10/01/2006');INSERT INTO TMP_DATA VALUES('14/01/2006');INSERT INTO TMP_DATA VALUES('21/01/2006');INSERT INTO TMP_DATA VALUES('27/01/2006');INSERT INTO TMP_DATA VALUES('01/02/2006');INSERT INTO TMP_DATA VALUES('02/02/2006');INSERT INTO TMP_DATA VALUES('10/02/2006');INSERT INTO TMP_DATA VALUES('14/02/2006');INSERT INTO TMP_DATA VALUES('21/02/2006');INSERT INTO TMP_DATA VALUES('27/02/2006');SELECT *  FROM TMP_DATA WHERE CAST(CONCAT(SUBSTR(DATA,7,4),'/',SUBSTR(DATA,4,2),'/',SUBSTR(DATA,1,2)) AS DATE) BETWEEN '2006-01-10' AND '2006-02-10'ORDER BY CAST(CONCAT(SUBSTR(DATA,7,4),'/',SUBSTR(DATA,4,2),'/',SUBSTR(DATA,1,2)) AS DATE) DESC

-- SCRIPT PARA CONVERTER UMA COLUNA VARCHAR PARA DATA... LEMBRANDO QUE NENHUMA DATA PODE ESTAR ERRADA POIS PODERÁ PERDER INFORMAÇÃO...

update TMP_DATA set data =  CAST(CONCAT(SUBSTR(DATA,7,4),'/',SUBSTR(DATA,4,2),'/',SUBSTR(DATA,1,2)) AS DATE)ALTER TABLE tmp_data CHANGE data data DATE;
;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.