Select entre datas SQL
Olá,
Estou com uma dificuldade. Mas é uma dúvida do que uma dificuldade.
Estou fazendo um SELECT (com PHP) entre duas datas.
Ex.:
No meu BD, a coluna da tabela está em formato TEXT. Então, quando o SQL é executado, alguns resultados acabam sendo exibidos, mas porque ele não está 'entendendo' a consulta.
A dúvida é seguinte:
Se eu utilizar TEXT na coluna do BD, pode dar problema no formato de data quando o SQL for executado?
Como resolvo esse problema convertendo as datas?
Estou com uma dificuldade. Mas é uma dúvida do que uma dificuldade.
Estou fazendo um SELECT (com PHP) entre duas datas.
Ex.:
SELECT idFrequencia FROM frequencias WHERE dataChamada >= '06/02/2017' AND dataChamada <= '20/04/2017'.
No meu BD, a coluna da tabela está em formato TEXT. Então, quando o SQL é executado, alguns resultados acabam sendo exibidos, mas porque ele não está 'entendendo' a consulta.
A dúvida é seguinte:
Se eu utilizar TEXT na coluna do BD, pode dar problema no formato de data quando o SQL for executado?
Como resolvo esse problema convertendo as datas?
João Ferlini
Curtidas 0
Melhor post
Fabio Parreira
05/05/2017
SELECT
idFrequencia
FROM
frequencias
WHERE
DATE_FORMAT(STR_TO_DATE(dataChamada , '%d/%m/%Y'), '%Y-%m-%d')
>= '2017-02-06'
AND DATE_FORMAT(STR_TO_DATE(dataChamada , '%d/%m/%Y'), '%Y-%m-%d')
<= '2017-04-20'
DATE_FORMAT(STR_TO_DATE(data, '%d/%m/%Y'), '%Y-%m-%d')
Só ressaltando que quando o campo data é texto o correto é você fazer a conversão para o padrão américa para fazer a comparação.dd/MM/yyyy.
Note que 01/12/2017 quando comparado se é maior que 10/02/2017, está errado, pois no caso está comparando texto, e o mysql vai tentar converter pra inteiro, logo 01122017 não é maior que 10022017, agora se você inverter para o padrão americano vai que 20171201 é maior que 20170210. Fica a dica.
GOSTEI 1
Mais Respostas
Luiz Santos
05/05/2017
João.
Qual banco você está usando?
Grande abs
Qual banco você está usando?
Grande abs
GOSTEI 0
Jones Granatyr
05/05/2017
Opa! Nesse caso você terá mesmo que converter de string para data. Dê uma olhada na função "strtotime", que consegue fazer essa conversão
GOSTEI 0
João Ferlini
05/05/2017
Uso o MySql.
GOSTEI 0
João Ferlini
05/05/2017
Acabei utilizando essa função para fazer esse SELECT, mas mesmo assim ele trata datas como por exemplo: 13/02/2017 como incorretas, porque ele tenta converter a data para 2017-02-13 ou 2017-13-02, onde 13 é o mês (o que não existe).
GOSTEI 0