Gostou dessa matéria?
Inscreva seu email para receber atualizações com as últimas publicações do nosso blog.[jetpack_subscription_form show_subscribers_total="false" button_on_newline="false" custom_font_size="16px" custom_border_radius="0" custom_border_weight="1" custom_padding="15" custom_spacing="10" submit_button_classes="" email_field_classes="" show_only_email_and_button="true" success_message="Sucesso! Enviamos um e-mail para confirmar a sua assinatura. Encontre o e-mail agora e clique em 'Confirmar' para iniciar a inscrição."]
Como fazer o between no campo data sendo ele no banco de dados como varchar?
Agradeço pelos tópicos que vc posta
Olá Eduardo, neste caso você terá que converter o campo varchar para date, pois o between não se aplica a strings.
Uma das partes mais importantes de um projeto é a modelagem do bando de dados, as vezes você pode achar que é mais fácil usar uma scring ao invés de um date ou datetime, mais a dor de cabeça pode vir depois quando for necessário fazer alguma modificação em seu sistema.
T+!
Ivanilton concordo com vc sobre modelagem de banco de dados. Mas existem sistemas que já estão com data em strings há tempos e tudo no sistema trabalha já desta forma e não há como alterar isto se não remodelar todo o sistema. Além é claro do cliente querer te pagar apenas algumas horas para fazer mais uma ferramentinha no que já está funcionando. A idéia do cliente é sempre assim (se funciona com tudo pq não funciona com o que quero q vc faça). Infelizmente nem sempre há um analista no projeto ou orçamento suficiente para uma remodelagem.
A query que consegui fazer o between no campo data como string é:
SELECT * FROM `nomeTabela`
WHERE (STR_TO_DATE(`data`,’%d-%m-%Y’)) BETWEEN ‘2012-01-14’ AND ‘2012-10-25’
Procurei bastante na internet mas não encontrei um exemplo simples como este com relação ao Between.
Obrigado pela rápida resposta.
Abraços!
Gostei muito dos seus posts (Trabalhando corretamente com Data , e também os erros mais comuns de programadores PHP com MySQL)
Boa dica Eduardo! Nada é impossível para quem tem criatividade 🙂
Abraços!
Estou lendo direto e seus post e esta de parabéns estou enfrentando o problema com BETWEEN entre datas gravadas em um campo varchar. tem hora que traz informação tem hora que não. O melhor a se fazer e mudar para date. so que tenho um problema tem um processo no meu sistema que os dados são importados de um txt e o formato que vem deste arquivo dd/mm/YYY como faço para converter para o padrao do mysql no insert vindo de um arquivo txt. obrigado
Olá Luciano, Tudo bem?
Bom, deixa ver se eu entendi, vc tem uma variável com a data no formato brasileiro (dd/mm/yyyy) e quer salva-la no banco de dados no formato do MySQL (yyyy-dd-mm), né?
Tende fazer desse jeito: $data = implode(‘-‘,array_reverse(explode(‘/’,$data)));
Abs!