consulta con INTERVAL, fechas en Mysql

Iniciado por diproxt, 30 Marzo 2014, 05:20 AM

0 Miembros y 1 Visitante están viendo este tema.

diproxt

Hola, no tengo mucha experiencia con fechas en Mysql y me han sacado un gran dolor de cabeza

Quiero hacer una query para seleccionar datos con rango de fecha de 1 día atrás, 1 semana, 1 mes, etc. Aplicando el sgte código no me resulta del todo bien

Las fechas en mi BD son varchar con formato 30/12/2013

SELECT * FROM agenda WHERE DATE_SUB( CURDATE( ) , INTERVAL 1 DAY ) <= STR_TO_DATE( AH_Fecha,  '%d/%m/%Y' )

el resultado da fechas superiores a esa, alguien me puede ayudar?
Open your mind

Carloswaldo

¿Por qué la fecha está en un varchar y no en un campo de fecha?

Cita de: diproxt en 30 Marzo 2014, 05:20 AM
SELECT * FROM agenda WHERE DATE_SUB( CURDATE( ) , INTERVAL 1 DAY ) <= STR_TO_DATE( AH_Fecha,  '%d/%m/%Y' )

¿Qué es exactamente lo que quieres hacer? La consulta hace lo que le dices, si CURDATE() es 31/03/2014, le restas un rango de 1 día y tienes 30/03/2014, y le estás diciendo que esta fecha tiene que ser menor o igual a la que tomas del campo: 30/03/2014 <= 1/04/2014 da TRUE

diproxt

exactamente ese era mi error, estaba trabajando con varchar y es necesario el tipo date ya que al hacer la conversión de varchar a date arrojaba fechas con formato año-mes-dia. Por eso no funcionaba la consulta

Vi un poco tarde la respuesta pero gracias de todas formas Carloswaldo
Open your mind