Foros del Web » Programando para Internet » PHP »

Sacar registros según número de días

Estas en el tema de Sacar registros según número de días en el foro de PHP en Foros del Web. Hola a tod@s: Tengo, en una base de datos MySQL, una tabla de programas java creados. Entre otros campos, están el referido al nombre del ...
  #1 (permalink)  
Antiguo 25/11/2006, 19:17
Avatar de zacktagnan  
Fecha de Ingreso: abril-2005
Mensajes: 501
Antigüedad: 19 años
Puntos: 3
Sacar registros según número de días

Hola a tod@s:

Tengo, en una base de datos MySQL, una tabla de programas java creados. Entre otros campos, están el referido al nombre del programa [prog_nombre] ó el referido a la fecha de creación del programa [prog_fechacrea].

Lo que quiero es obtener el listado de programas cuya fecha de creación restada a la fecha actual sea menor ó igual a 60 días. Es decir:

fecha_de_hoy - fecha_creacion <= 60


Encontré una manera de restar fechas y obtener el resultado de ésta en días. Así:
Código PHP:
//EJEMPLO:
//FECHA_ACTUAL >> date('Y/m/d')
//FECHA_A_RESTAR >> 2006/11/13 (EJEMPLO)
round((strtotime(date('Y/m/d'))-strtotime('2006/11/13'))/(24*60*60),0

Para obtener el listado según la condición expuesta en primer lugar, ¿cómo lo hago? ¿a través de un WHERE en el propio SELECT?

He probado a poner el código de la resta en el propio SQL de la consulta de esta manera:
Código PHP:
$query_rs_ProgramNuevos "SELECT * FROM programas WHERE ".round((strtotime(date('Y/m/d'))-strtotime('."programas.prog_fechacrea".'))/(24*60*60),0)." <= 60"
pero aunque no da error, tampoco produce nada...

¿Alguien me podría ayudar a conseguir lo deseado...?

Saludos,

zactagnan.
==========================================
  #2 (permalink)  
Antiguo 25/11/2006, 19:35
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Me pregunto ..

Por qué no usas funciones de tratamiento de fechas en SQL (que es el lenguaje que usas para hacer tu consulta a tu BBDD y obtener los datos que cumplen tu condición) en lugar de liarte con "PHP" por médio?

Si tu campo de fecha en tu tabla implicada es de tipo DATE o DATETIME .. con mayor razón se te hará más facil usar SQL para resolver este problema.

Por ejemplo .. (depende de la versión de Mysql que uses) puedes usar funciones de SQL para fechas como:

DATE_SUB() .. y definiendo un "intervalo" (que se puede exprear en días, meses .. etc)

En resumen .. todo el código que intentas hacer en "PHP" es más natural y rápido de ejecutar si lo haces en SQL -sólo- .. Acostumbrate a "pensar" que "SQL" es otro lenguaje que debes aprovechar y conocer .. bien empleado te ahorrará mucho código.

Código PHP:
$sql="SELECT * FROM tabla WHERE DATE_SUB(CURDATE(),INTERVAL 60 DAY) <= prog_fechacrea"
Te recomendaría dejar claro que tipo de campo para tu fechas usas y consultar en el foro de Base de datos

De momento te dejo la referencia del manual oficial de Mysql al respecto:
http://dev.mysql.com/doc/en/Date_and...functions.html

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 25/11/2006, 20:09
Avatar de zacktagnan  
Fecha de Ingreso: abril-2005
Mensajes: 501
Antigüedad: 19 años
Puntos: 3
¡ Muy bien ! ¡ Perfecto, justo lo que quería !
La verdad es que ya estaba probando algo con el CURDATE pero me faltaba lo de la función esa de DATE_SUB().

Gracias otra vez por tus sabios consejos. E intentaré echar un vistazo, al manual del enlace cuando tenga algo más de tiempo...

Saludos,

zacktagnan.
===========================================
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:57.