Ir para conteúdo

POWERED BY:

Arquivado

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

Leonardo Rocha

Converter DATA em formato TEXTO para tipo DATA

Recommended Posts

Caros colegas.

 

É o seguinte necessito converter uma data que encontra-se em ACCESS em formato TEXTO, necessito converter ela na consulta. Veja abaixo como está a consulta:

 

stringSQL = "SELECT * FROM estabelecimento WHERE data_cadastro BETWEEN '"&datainicio&"' and '"&datafinal& "'"

Pois as variáveis "datainicio" e "datafinal" deve ser convertida para DATA senão os dados não serão filtrados corretamente.

 

Preciso muito da força de vcs... Não tenho ideia de como fazer isso.

 

Leonardo Rocha

Compartilhar este post


Link para o post
Compartilhar em outros sites

conselho de camarada, troque para formato de data no banco!

Você pode ter problemas futuros

 

no laboratório de ASP temos scripts de formatação de data, dê uma checada lá!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para converter um texto em data:

 

CDATE(TEXTO)

Compartilhar este post


Link para o post
Compartilhar em outros sites

segue o conselho do Ted k' acima...

procura no laboratório de ASP temos scripts de formatação de data,

existem varios exemplos

Compartilhar este post


Link para o post
Compartilhar em outros sites

exato, mais precisamente aqui:

http://forum.imasters.com.br/index.php?showtopic=298401

 

e volto a afirmar!

conselho de camarada, troque para formato de data no banco!

Compartilhar este post


Link para o post
Compartilhar em outros sites

o melhor é sempre usar o tipo de dados correto em relação a informação que ele guarda como o ted disse

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entendo Ted,

 

Acontece o seguinte... Estou criando um relatório em um sistema que já estava funcionando a tempos, porém este campo ao qual refiro que é uma data com o tipo TEXTO já está em uso já tem muito tempo... O sistema não poderá ser modificado. Neste caso só necessito realizar esta consulta para criar o relatório, por este motivo necessito da força de vocês. Conto com a ajuda de todos.

 

Muito obrigado pela atenção!

 

Leonardo Rocha

Compartilhar este post


Link para o post
Compartilhar em outros sites

Por que não pode ser modificado? Faça um backup do banco, modifique e teste.

 

Você não consegue fazer essa consulta utilizando tipo "texto"... mesmo o valor sendo uma data. O que manda é o tipo de dados e não a expressão utilizada no WHERE.

 

 

 

Editado

--------

 

Tenta isso:

SELECT * FROM estabelecimento WHERE cDate(data_cadastro) BETWEEN '"&datainicio&"' and '"&datafinal& "'

Compartilhar este post


Link para o post
Compartilhar em outros sites

Também concordo que o tipo do campo deve ser modificado, até porque ficar fazendo esse tipo de conversão no SQL pode te resultar em queda de desempenho.

 

Quanto a sua pergunta de como fazer isso dentro do SQL:

 

stringSQL = "SELECT * FROM estabelecimento WHERE CDATE(data_cadastro)  BETWEEN #"&datainicio&"# and #"&datafinal& "#"

Ps. Desculpa hargon, não tinha visto que você já tinha escrito o mesmo código

Compartilhar este post


Link para o post
Compartilhar em outros sites

Postamos a mesma sugestão.

 

Vale lembrar que o problema de converter a cada consulta, é que vai deixa-la muito lenta quando tiver vários registros. Não vale apena... é o famoso POG.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fiz uma correção no código que eu postei, porque se você usar o campo como CDATE() você precisará usar # para delimitar a data.

 

Ps. Lembrando que se você usar # você deve converter a data no formato mm/dd/aaaa OU aaaa-mm-dd

Compartilhar este post


Link para o post
Compartilhar em outros sites

Só uma observação... antes de postar havia testado sem #, e o resultado foi o esperado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

É, por precaução eu sugiro usar o formato padrão para datas, que é o #, senão seria como comparar uma data a uma string.

 

Eu sei que no INSERT ele permite strings, mas na comparação eu prefiro usar #.

 

É só questão de opinião pessoal mesmo, pode usar o que achar melhor.

 

Lembrando que se você não converter a data (mm-dd-aaaa) ao comparar, caso você opite por utilizar #, pode ser que aparentemente esteja funcionando, porque quando o dia é maior que 12 o access converte sozinho, mas quando não for ele irá comparar errado.

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.