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

Query usando Interval

Estas en el tema de Query usando Interval en el foro de Bases de Datos General en Foros del Web. Hola Por qué esto me devuelve los registros con fecha de hoy pero NO los registros de las últimas 24 horas ? Código PHP: $sql1  ...
  #1 (permalink)  
Antiguo 12/12/2008, 01:15
(Desactivado)
 
Fecha de Ingreso: septiembre-2004
Mensajes: 360
Antigüedad: 19 años, 7 meses
Puntos: 1
Query usando Interval

Hola

Por qué esto me devuelve los registros con fecha de hoy pero NO los registros de las últimas 24 horas ?

Código PHP:
$sql1 "SELECT title AS MYTITLE, SUM(clicks) AS SUCLICKS, COUNT(id) AS NUMBER, permalink FROM most_viewed WHERE DATE(clicked_date) > DATE_SUB(CURDATE(), INTERVAL 24 HOUR) GROUP BY MYTITLE ORDER BY SUCLICKS desc LIMIT 0, 5"
Si alguien tiene 1 min, gracias.
  #2 (permalink)  
Antiguo 12/12/2008, 01:20
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 1 mes
Puntos: 2534
Respuesta: Query usando Interval

tal ves, en el foro de SQL ... ???
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 12/12/2008, 10:06
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Query usando Interval

Tema trasladado a Bases de Datos.
  #4 (permalink)  
Antiguo 12/12/2008, 14:55
(Desactivado)
 
Fecha de Ingreso: septiembre-2004
Mensajes: 360
Antigüedad: 19 años, 7 meses
Puntos: 1
Respuesta: Query usando Interval

mmmmm
tal vez una respuesta ... ?

yo estoy usando esa query dentro de un script php, a veces no resulta fácil decidir dónde postear exactamente... yo ahí puse sólo la query para abrir el tema pero tal vez el error es a causa de algún proceso posterior (php).

además hasta donde sé es GatorV el moderador y cumple maravillosamente su trabajo. No creo que necesite asistentes.

y sigo listando registros del día actual pero no de las últimas 24 horas...
  #5 (permalink)  
Antiguo 12/12/2008, 15:10
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
Respuesta: Query usando Interval

Por lo que veo puede ser un problema aritmético:
CURDATE() devuelve el DIA actual, al que si se le substraen 24 horas, se le resta un día. Como CURDATE() de vuelve un DATE y no un DATETIME, esto:
Código:
DATE(clicked_date) > DATE_SUB(CURDATE(), INTERVAL 24 HOUR)
significa que devuelva la información que sea mayor al día de ayer... Del DIA de ayer, esto es todo lo que comience con el día actual a las 00:00:00 horas, lo que no es lo que estás buscando.
Si lo que quieres es la información de las últimas 24 horas, entonces debes procesar las fechas como DATETIME, no como DATE:
Código:
clicked_date > DATE_SUB(CURDATE(), INTERVAL 24 HOUR)
o bien considerar que clicked_date sea mayor o igual a la fecha indicada:
Código:
clicked_date >= DATE_SUB(CURDATE(), INTERVAL 24 HOUR)
Personalmente, prefiero usar NOW(), que me devuelve DATETIME actual y no CURDATE(), que sólo devuelve la fecha, porque de esa forma puedes calcular la consulta sobre las últimas 24 horas reales (en tu ejemplo mejorado si la consulta la haces a las 23:59 te devovlerá la info de casi dos días completos), esto sería:
Código sql:
Ver original
  1. SELECT
  2.   title AS MYTITLE,
  3.   SUM(clicks) AS SUCLICKS,
  4.   COUNT(id) AS NUMBER,
  5.   permalink
  6. FROM most_viewed
  7. WHERE clicked_date >= DATE_SUB(NOW(), INTERVAL 24 HOUR)
  8. GROUP BY MYTITLE
  9. ORDER BY SUCLICKS DESC
  10. LIMIT 0, 5;
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #6 (permalink)  
Antiguo 12/12/2008, 21:35
(Desactivado)
 
Fecha de Ingreso: septiembre-2004
Mensajes: 360
Antigüedad: 19 años, 7 meses
Puntos: 1
Respuesta: Query usando Interval

Clarísimo, resuelto

Muchas gracias Gnzsoloyo !!!!!
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:52.