entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

2votos

Consulta a Base de Datos que devuelva 15 días segun fecha

Buenas, tengo una tabla llamada tabla1 en la cual tengo varios campos y un campo fecha que se guarda en varchar en MySQL el formato en que se guarda es Año/Mes/Día y quiero ejecutar una consulta desde mi modelo en codeigniter que me devuelva todas las filas de los últimos 15 días. De la forma que tengo pensado hacerlo es si días > 15 entonces hacer la consulta de desde fecha = dias-15 hasta días, pero si días es menor que 15 entonces se enreda la cosa.
Alguien podría decirme una forma de hacerlo más eficiente. ??

0voto

dairon comentado

Con este código SQL me retorna las últimas 15 Fechas únicas de las ultimas noticias en mi tabla

select DISTINCT Fecha  from tabla1 ORDER BY tabla1 .Id DESC LIMIT 15 

ahora necesito que me devuelva las noticias de esas fechas.

0voto

white comentado

hola @dairon !
las noticias las tienes en la tabla tabla1? o en una tabla aparte? como sugerencia la columna fecha debería tener algo mas flexible como un campo del tipo DATE o un integro 11 con el tiempo en formato unixtime

0voto

dairon comentado

@white mano la fecha es un campo de la tabla1, creo que se aria con anidacion o algo por el estilo ahora mismo estoy investigando si encuentro la respuesta la pongo aquí.
saludos

1 Respuesta

1voto

white Puntos75880

intenta con esta consulta:

SELECT id
FROM tabla1
WHERE DATEDIFF(CURDATE(), STR_TO_DATE(fecha, '%Y/%m/%d')) <= 15
ORDER BY id DESC
LIMIT 15

aqui: STR_TO_DATE(fecha, '%Y/%m/%d') convertimos tu cadena "fecha" en DATE para luego restar con la fecha actual,

DATEDIFF regresa la diferencia en días, en la consulta comprueba que tenga como maximo una diferencia 15 días.

0voto

dairon comentado

El Script funciona bien, devuelve las últimas 15 noticias pero yo necesito todas las noticias de los últimos 15 Días mano

0voto

white comentado

intenta removiendo la sentencia LIMIT:

SELECT id
FROM tabla1
WHERE DATEDIFF(CURDATE(), STR_TO_DATE(fecha, '%Y/%m/%d')) <= 15
ORDER BY id DESC

0voto

dairon comentado

Perfecto mano solo un detalle y es que hay que restarle uno al valor que limita la cantidad de dias es decir 0 significa 1 día. Thanks

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta