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

fallo consulta con NOW()

Estas en el tema de fallo consulta con NOW() en el foro de Mysql en Foros del Web. Hola,esta consulta me va bien en el ordenador de desarrollo: Código HTML: SELECT * FROM tabla WHERE (tabla.fecha=NOW() ) Sin embargo, cuando paso la aplicación ...
  #1 (permalink)  
Antiguo 25/01/2008, 04:44
Avatar de sfx4ever  
Fecha de Ingreso: noviembre-2003
Ubicación: aqui
Mensajes: 384
Antigüedad: 20 años, 5 meses
Puntos: 2
fallo consulta con NOW()

Hola,esta consulta me va bien en el ordenador de desarrollo:

Código HTML:
SELECT * FROM tabla WHERE (tabla.fecha=NOW() )
Sin embargo, cuando paso la aplicación al servidor en producción la misma consulta no me devuelve NADA

¿sera alguna opción de configuración de mysql? Utilizo mysql 5.


Agradezco vuestra ayuda.

Un saludo.
  #2 (permalink)  
Antiguo 25/01/2008, 11:41
 
Fecha de Ingreso: enero-2008
Mensajes: 197
Antigüedad: 16 años, 4 meses
Puntos: 10
Re: fallo consulta con NOW()

Hola sfx4ever,
probablemente sea porque now() te toma la fecha pero con todo y minutos y segundos por lo que igualarlo con un campo fecha sea un poco difícil que de resultados, lo más práctico es igualarlo con una función que te da la fecha de hoy pero sin minutos y segundos... que sería esta: CURDATE( )
con esta tienes más probabilidades de obtener resultados

Saludos!
  #3 (permalink)  
Antiguo 26/01/2008, 10:42
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Re: fallo consulta con NOW()

Mas o menos así.
No te devuelve nada porque como te dice hualro, la representación de la función NOW() es:
Cita:
"YYYY-MM-DD hh:mm:ss"
y eso simplemente porque lo que devuelve es un DATETIME.

De modo que para que exista una coincidencia, el valor almacenado en la tabla debería ser EXACTAMENTE IGUAL AL MOMENTO DE EJECUCIÓN DE LA CONSULTA, cosa lógicamente imposible (para ello debería almacenar y consultar en el mismo segundo exacto).
El tema es que si lo que quieres es recuberar los registros almaenados con fecha de este mismo día, puedes usar dos formas:
- La función CURDATE(), como te menciona hualro, que te devuelve un DATE.
- Realizar la consulta así:
Cita:
SELECT * FROM tabla WHERE tabla.fecha=DATE(NOW() );
suponiendo que tabla.fecha es un DATE, o bien:
Cita:
SELECT * FROM tabla WHERE DATE(fecha)=DATE(NOW() )
si es un datetime.
  #4 (permalink)  
Antiguo 28/01/2008, 06:09
Avatar de sfx4ever  
Fecha de Ingreso: noviembre-2003
Ubicación: aqui
Mensajes: 384
Antigüedad: 20 años, 5 meses
Puntos: 2
Re: fallo consulta con NOW()

gracias a los dos, ya lo he solucionado
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 17:43.