Foros del Web » Programando para Internet » PHP »

Problema con Consulta

Estas en el tema de Problema con Consulta en el foro de PHP en Foros del Web. Hola Maestros: estoy haciendo un sistema con php y mysql , este sistema basicamente es de consultas, en las cuales son seleccionados periodos de fechas ...
  #1 (permalink)  
Antiguo 18/03/2003, 11:45
Avatar de payo22  
Fecha de Ingreso: noviembre-2002
Ubicación: México
Mensajes: 839
Antigüedad: 21 años, 5 meses
Puntos: 1
Problema con Consulta

Hola Maestros:

estoy haciendo un sistema con php y mysql , este sistema basicamente es de consultas, en las cuales son seleccionados periodos de fechas y es ahi en donde tengo un problema, ya que si selecciono lo siguiente:

17 de febrero del 2003 al 17 de marzo del 2003

el resultado es que solo me seleccio esos dos dias y no los dias que hay entre esas dos fechas.

la sentencia sql que utilizo es la siguiente:


Código PHP:
$sql "SELECT DISTINCT Fecha,Estacion,PS,PP,HGT,TT,TD,DD,FF from $tabla where DAYOFMONTH(Fecha) BETWEEN $bdy AND $edy AND MONTH(Fecha) IN ($bmo,$emo) AND YEAR(Fecha) BETWEEN $byr and $eyr "
donde:

$bdy = dia de inicio.
$edy = dia de final.
$bmo = mes de inicio.
$emo = mes final.
$byr = año de inicio.
$eyr = año final.


no se cual sea el problema.

espero me puedan ayudar.

gracias por su apoyo.
  #2 (permalink)  
Antiguo 18/03/2003, 12:26
Avatar de Cain  
Fecha de Ingreso: enero-2002
Ubicación: Catalunya
Mensajes: 6.459
Antigüedad: 22 años, 4 meses
Puntos: 17
El problema está en que la consulta que haces dice:

"Que el día esté entre 17 y 17, el mes sea febrero o marzo y el año este entre 2002 y 2002"

Deberías decirle:

"Que la fecha esté entre el 17 de febrero de 2002 y el 17 de marzo de 2002"

"WHERE fecha BETWEEN '$byr-$bmo-$bdy' AND '$eyr-$emo-$edy'"
__________________
M a l d i t o F r i k i
  #3 (permalink)  
Antiguo 18/03/2003, 12:58
Avatar de payo22  
Fecha de Ingreso: noviembre-2002
Ubicación: México
Mensajes: 839
Antigüedad: 21 años, 5 meses
Puntos: 1
No sale

Gracias Cain:

pero no queda asi como lo pones me dice que no existe ningun registro lo puse asi:

Código PHP:
  $sql "SELECT * from $tabla where Fecha BETWEEN '$byr-$bmo-$bdy-$bhr' AND '$eyr-$emo-edy-$ehr'"
gracias por todo.
  #4 (permalink)  
Antiguo 18/03/2003, 13:14
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 4 meses
Puntos: 129
El campo de tu tabla es DATE? o DATETIME ?

Date cuenta que el DATE solo guardar mm-dd-aaa y el DATETIME: mm-dd-aaaa hh:mm:ss

Si usas un campo DATETIME (fecha/hora) tenlo presente a la hora de componer las fechas que vas a comparar ..

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #5 (permalink)  
Antiguo 18/03/2003, 13:23
Avatar de payo22  
Fecha de Ingreso: noviembre-2002
Ubicación: México
Mensajes: 839
Antigüedad: 21 años, 5 meses
Puntos: 1
campo

El campo Fecha es de tipo DATETIME.

entonces cual es la diferencia de comparaciones o como le puedao hacer.

gracias por todo
  #6 (permalink)  
Antiguo 18/03/2003, 13:40
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 4 meses
Puntos: 129
Tan solo haciendo un condicionan mayor q .. menor q .. sobraría:
Código PHP:
SELECT FORM tabla WHERE campo_fecha 'mm-dd-aaaa 00:00:00' AND campo_fecha 'mm-dd-aaaa 00:00:00' 
Sustituye tus variables de dia,mes,año y deja la hora fija por ejemplo (a no ser que quieras usarlo tambien ..)

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.

Última edición por Cluster; 18/03/2003 a las 13:42
  #7 (permalink)  
Antiguo 18/03/2003, 14:12
Avatar de payo22  
Fecha de Ingreso: noviembre-2002
Ubicación: México
Mensajes: 839
Antigüedad: 21 años, 5 meses
Puntos: 1
gracias

Gracias Cluster!!!

ya salio ahora lo que voy a hacer es a estructurar mejor mis tablas

gracias por todo.
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 13:29.