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

Agrupar noticias por meses usando TIMESTAMP

Estas en el tema de Agrupar noticias por meses usando TIMESTAMP en el foro de Bases de Datos General en Foros del Web. Hola a todos. Tengo una tabla en mi base de datos, donde almaceno mis noticias. Esa tabla tiene un campo VARCHAR 14 donde se almacena ...
  #1 (permalink)  
Antiguo 08/12/2004, 15:06
Avatar de Takitei  
Fecha de Ingreso: septiembre-2004
Ubicación: Venezuela
Mensajes: 1.231
Antigüedad: 19 años, 7 meses
Puntos: 5
Agrupar noticias por meses usando TIMESTAMP

Hola a todos.

Tengo una tabla en mi base de datos, donde almaceno mis noticias. Esa tabla tiene un campo VARCHAR 14 donde se almacena la fecha en que fue colocada la noticia mediante un UNIX_TIMESTAMP.

En mi web, quisiera agrupar mis noticias por meses, de tal forma que en el lado derecho de mi web aparezcan links que agrupen las noticias por meses. Por ejemplo, al dar clic sobre octubre 2004, se muestren las noticias de todo el mes de OCTUBRE del presente año.

¿Cómo hago esto usando el TIMESTAMP de UNIX?... ¿como hago para saber qué meses existen en mis noticias?

Un saludo!... gracias!
__________________
Takitei
Ingeniarte.com
DannyHerran.com
"Dadme un punto de apoyo y moveré la tierra" - Arquímedes.
  #2 (permalink)  
Antiguo 08/12/2004, 19:40
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 7 meses
Puntos: 41
Bueno... en realidad no veo por qué no utilizas simplemente campos DATE o DATETIME.... de esta manera se te simplificaría mucho la tarea del manejo de fechas desde mysql (¿es mysql?).
Date una vuelta por el manual de mySQL (¿es mysql?) seguramente encontrarás lo que buscas.
http://dev.mysql.com/doc/mysql/en/Da...functions.html

Saludos:adios
  #3 (permalink)  
Antiguo 10/12/2004, 08:30
Avatar de Takitei  
Fecha de Ingreso: septiembre-2004
Ubicación: Venezuela
Mensajes: 1.231
Antigüedad: 19 años, 7 meses
Puntos: 5
Si, es MySQL.

Decidí usar DATETIME tal como lo dijistes, y formateo la fecha con DATE_FORMAT. Entonces, ya trabajo todas mis consultas asi, pero sigo teniendo problemas para agrupar los meses:

Código PHP:
$ssql="SELECT *, DATE_FORMAT(postedon,'%M %Y') AS dateGroup FROM news ORDER by dateGroup";
$rs=mysql_query($ssql);
while(
$row=mysql_fetch_array($rs)){
  echo 
"<li><a href=\"index.php?show=news&id=".$row['dateGroup']."\">".$row['dateGroup']."</a></li>";

Eso me imprime el mismo mes varias veces, por ejemplo si tengo 6 noticias en Diciembre y 2 en Octubre, me imprime:

October 2004
October 2004
December 2004
December 2004
December 2004
December 2004
December 2004
December 2004

¿Cómo podría hacer para que se agrupen y muestre 1 solo mes? Debería imprimir solo:

October 2004
December 2004
__________________
Takitei
Ingeniarte.com
DannyHerran.com
"Dadme un punto de apoyo y moveré la tierra" - Arquímedes.

Última edición por Takitei; 10/12/2004 a las 10:27
  #4 (permalink)  
Antiguo 10/12/2004, 15:37
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 7 meses
Puntos: 41
Utiliza la cláusula DISTINCT.

Saludos
  #5 (permalink)  
Antiguo 11/12/2004, 05:49
Avatar de Takitei  
Fecha de Ingreso: septiembre-2004
Ubicación: Venezuela
Mensajes: 1.231
Antigüedad: 19 años, 7 meses
Puntos: 5
He tratado de aplicar la cláusula a mi consulta, pero no funciona, me da error de SINTAX. He probado lo siguiente:

SELECT DISTINCT *, DATE_FORMAT(postedon,'%M %Y') AS dateGroup FROM news ORDER by dateGroup

SELECT *, DISTINCT DATE_FORMAT(postedon,'%M %Y') AS dateGroup FROM news ORDER by dateGroup

SELECT *, DISTINCT(DATE_FORMAT(postedon,'%M %Y')) AS dateGroup FROM news ORDER by dateGroup

SELECT *, DISTINCT(DATE_FORMAT(postedon,'%M %Y') AS dateGroup) FROM news ORDER by dateGroup

SELECT *, DATE_FORMAT(postedon,'%M %Y') AS DISCTINCT dateGroup FROM news ORDER by dateGroup

SELECT *, DATE_FORMAT(postedon,'%M %Y') AS DISTINCT(dateGroup) FROM news ORDER by dateGroup

SELECT *, DATE_FORMAT(postedon,'%M %Y') AS dateGroup DISTINCT dateGroup FROM news ORDER by dateGroup

Ninguna funciona. ¿Qué estoy haciendo mal?
__________________
Takitei
Ingeniarte.com
DannyHerran.com
"Dadme un punto de apoyo y moveré la tierra" - Arquímedes.
  #6 (permalink)  
Antiguo 11/12/2004, 06:48
 
Fecha de Ingreso: enero-2004
Mensajes: 235
Antigüedad: 20 años, 4 meses
Puntos: 0
SELECT *, DATE_FORMAT(postedon,'%M %Y') AS dateGroup FROM news GROUP BY dateGroup ORDER by dateGroup
  #7 (permalink)  
Antiguo 11/12/2004, 10:10
Avatar de Takitei  
Fecha de Ingreso: septiembre-2004
Ubicación: Venezuela
Mensajes: 1.231
Antigüedad: 19 años, 7 meses
Puntos: 5
Perfecto. Ahora si agrupa correctamente las noticias.

Mil gracias a todos!
__________________
Takitei
Ingeniarte.com
DannyHerran.com
"Dadme un punto de apoyo y moveré la tierra" - Arquímedes.
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:07.