Ver Mensaje Individual
  #17 (permalink)  
Antiguo 09/09/2011, 05:34
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Mostrar temas más populares en el último mes

Cita:
Iniciado por David224 Ver Mensaje
¿Hay que configurar algo más sobre DATETIME aparte de otorgar a ese campo dicha propiedad? (algun juego de caracteres tal vez)?
¿Charset o collation? No. Las fechas no se guardan en realidad como caracteres sino como números de punto flotante, y los números (sin importar cuáles) se almacenan siempre como binarios.
Por eso un DATETIME ocupa nada más que 8 bytes, a pesar de que corresponde a un dato que se representa con 19 caracteres ("0000-00-00 00:00:00"). Es el sistema el que interpreta los atributos de ese tipo de dato y lo administra como DATETIME.

Yo sigo insistiendo en que me gustaría ver el CREATE TABLE de esa tabla.

De todos modos, hay un detalle que considerar: Ese HAVING en realidad contiene condiciones que deberían estar en el WHERE y no allí. el HAVING normalmente se usa para buscar una condición en especial, y no una que se aplique como filtro genérico.
Además, el comportamiento del HAVING en MySQL tiene algunas características que pueden estar generando errores casi imperceptibles (hay que revisar el manual cuidadosamente).

En cualquier caso, yo te propondría una sintaxis algo mejor, que posiblemente de resultado:
Código MySQL:
Ver original
  1. SELECT YEAR(fecha),
  2.             MONTH(fecha),
  3.             id,
  4.             count(*) total
  5. FROM comentarios
  6.              YEAR(fecha)=YEAR(NOW())
  7.              AND
  8.              MONTH(fecha)=MONTH(NOW())
  9. GROUP BY YEAR(fecha), MONTH(fecha), id
  10. ORDER BY total desc
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 09/09/2011 a las 05:58