Bom dia, estou com o seguinte problema a instrução a seguir :
esta me retornando todos os estudantes que estão com situação=0(false) e que estão entre duas data.
O problema é que não esta retornando os estudantes com a data 2011-12-29 ele ta pegando somente até o dia 28. O seria o problema???
entenda que o between usa < e nao <=, ou seja, vai trazer sempre o valor que vc colocar -1.
isso pode mudar tambem de acordo com o banco q vc estiver usando.
Tiago_Casanova
um valeu mauricioadl, no meu caso estou usando o mysql, vc saberia se tem outra forma de fazer isso???
mauricioadl
usa o comparador normal tipo:
where sua_dada >= 10/01/2011 AND sua_data <= 10/12/2011
[]'s
Tiago_Casanova
tinha tentado assim
SELECT * FROM students WHERE (created_at >= ‘2011-06-01’ and created_at <= ‘2011-12-29’)
mas tbm nao deu, continua nao pegando os estudantes com a data 2011-12-29, no banco o campo esta como datatime.
mauricioadl
se estiver com datetime nao vai encontrar mesmo, prq vai ter valores de horario tbm. entao vc precisa eh "truncar" a data. nunca usei isso no mysql, porem achei no google que eh feito da seguinte forma.
DATE_FORMAT(date_time_var, ‘%Y-%m-%d’)
vai ficar tipo assim:
SELECT * FROM students
WHERE (DATE_FORMAT(created_at , ‘%Y-%m-%d’) >= '2011-06-01’
and
DATE_FORMAT(created_at , ‘%Y-%m-%d’) <= ‘2011-12-29’)
Cabazzo
O formato do DATETIME é ‘YYYY-MM-DD HH:MM:SS’, então se vc omite as horas/minutos/segundos ele supõe que seja a primeira hora do dia 00:00:00, ou vc muda o campo para DATE, ou coloca no between a parte das horas.
Tiago_Casanova
Valeu mauricioadl era isso mesmo deu certo…Abraço
gfkauer
mauricioadl:
entenda que o between usa < e nao <=, ou seja, vai trazer sempre o valor que vc colocar -1.
isso pode mudar tambem de acordo com o banco q vc estiver usando.
Apenas uma leve correção, o between trabalha com <= e >= ! O problema é as horas salvas no banco.
E
evefuji
uma coisa, é recomendável você adicionar um dia na data, pois com o date_format você converte em string, além de poder ter algum inconveniente (por comparar duas strings ao invés de datas), a consulta fica mais lenta, pois comparar string é muito mais pesado que comparar datas.
Fiz um teste rápido e dessa forma consegui truncar a data no mysql:
Possivelmente tem um desempenho melhor que comparar strings.