Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

WHERE con DATETIME

Estas en el tema de WHERE con DATETIME en el foro de Bases de Datos General en Foros del Web. Saludos. Tengo un campo tipo DATETIME y quiero extraer en una consulta los registros en donde la fecha = fechaDB Tengo lo siquiente: Código PHP: ...
  #1 (permalink)  
Antiguo 26/11/2004, 11:41
Avatar de José Molina  
Fecha de Ingreso: enero-2002
Ubicación: USA
Mensajes: 768
Antigüedad: 22 años, 3 meses
Puntos: 1
WHERE con DATETIME

Saludos.

Tengo un campo tipo DATETIME y quiero extraer en una consulta los registros en donde la fecha = fechaDB

Tengo lo siquiente:
Código PHP:
$fecha "30-12-2004";

$sql_listado "SELECT * FROM tabla WHERE DATE_FORMAT(fechaDB,'%Y-%m-%d') = DATE_FORMAT(" $fecha ",'%Y-%m-%d')"
La cosa es comparar las fechas sin importar el valor de las horas en el campo fechaDB de la tabla.

No me trae los resultados que debería

Donde esta el Error??

Gracias
__________________
José Molina
La marginalidad no esta en la incapacidad de calmar el hambre de un estómago sino en la incapacidad de calmar el hambre de la mente.
  #2 (permalink)  
Antiguo 26/11/2004, 11:48
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
No hace falta que apliques DATE_FORMAT() .. eso sí .. tu fecha ha de cumplir el formato standar de Mysql o bien el que fuerces si quieres usar DATE_FORMAT

SELECT * FROM fechaDB ='$fecha'

Suponiendo que $fecha tiene el mismo formato sintactico que la fechaDB

Un saludo,
  #3 (permalink)  
Antiguo 26/11/2004, 11:50
Avatar de José Molina  
Fecha de Ingreso: enero-2002
Ubicación: USA
Mensajes: 768
Antigüedad: 22 años, 3 meses
Puntos: 1
La cosa es que $fecha no tiene las horas, minutos ni segundos, esta variable solamente trae el año, el mes y el día, y fechaDB esta en formato DATETIME ...

En otras palabras:

$fecha = "2004-12-31";
fechaDB = "2004-12-31 10:15:02";

Tengo que hacer algo para quitarle a fechaDB el TIME y dejar solamente el DATE. Bueno eso es lo que me imagino yo. Inclusive, que ocurre si quiero comparar únicmante Meses, o Días ??
__________________
José Molina
La marginalidad no esta en la incapacidad de calmar el hambre de un estómago sino en la incapacidad de calmar el hambre de la mente.

Última edición por José Molina; 26/11/2004 a las 12:13
  #4 (permalink)  
Antiguo 26/11/2004, 13:33
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 20 años, 6 meses
Puntos: 11
Haz intentado asi:

$fecha = "30-12-2004";

$sql_listado = "SELECT * FROM tabla WHERE fechaDB= '$fecha';";

Por que las fecha que se pasan como parametros para comparar deben ir en el formato adecuado (año-mes-dia) y entre comillas simples.
  #5 (permalink)  
Antiguo 26/11/2004, 13:48
Avatar de José Molina  
Fecha de Ingreso: enero-2002
Ubicación: USA
Mensajes: 768
Antigüedad: 22 años, 3 meses
Puntos: 1
Bien.

la fecha en la tabla esta guardada así: año-mes-dia hora:minuto:segundo y la variable la tengo con año-mes-dia

Quiero comparar son las fecha, no me importa la hora.

con esa sentencia no puedo porque no serán nunca igual, ya que fechaDB tiene horas, minutos y horas mientras que $fecha no los tiene

Y recalco, si despues quiero comparar los mese únicamente?? en tal caso $fecha = "10" por ejemplo, debo transformar de alguna manera fechaBD para que me deje solamente el mes y poder hacer la comparación
__________________
José Molina
La marginalidad no esta en la incapacidad de calmar el hambre de un estómago sino en la incapacidad de calmar el hambre de la mente.
  #6 (permalink)  
Antiguo 26/11/2004, 14:06
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 20 años, 6 meses
Puntos: 11
pero probaste lo que te indiqué?
En el segundo caso debes usar date_format().
  #7 (permalink)  
Antiguo 26/11/2004, 14:46
Avatar de José Molina  
Fecha de Ingreso: enero-2002
Ubicación: USA
Mensajes: 768
Antigüedad: 22 años, 3 meses
Puntos: 1
Si y no funciona.

Por los momentos lo que hago es lo siguiente:

$fecha = "2004-11-25";
$hora = "00:00:00";
$horaf = "23:59:59";

$sql_listado = "SELECT * FROM tabla WHERE UNIX_TIMESTAMP(fechaDB) between UNIX_TIMESTAMP('" . $fecha . " " . $hora . "') AND UNIX_TIMESTAMP('" . $fecha . " " . $horaf . "');

Así me funciona pero no se si será la forma correcta de hacerlo. Y además, no me va a servir para cuando quiera buscar los registros del mes 11 o 12 o 2, ya que tengo que encontrar una forma de capturar de fechaDB solamente el mes para poder hacer la comparación.

Así que continuo esperando sugerencias
__________________
José Molina
La marginalidad no esta en la incapacidad de calmar el hambre de un estómago sino en la incapacidad de calmar el hambre de la mente.
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 00:06.