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

Ordenar fechas

Estas en el tema de Ordenar fechas en el foro de Mysql en Foros del Web. Hola te queria comentar que hago la consulta asi ( @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código MySQL: Ver original SELECT * FROM `0511` where id between 1 and ...
  #1 (permalink)  
Antiguo 21/10/2012, 15:48
 
Fecha de Ingreso: mayo-2008
Mensajes: 181
Antigüedad: 16 años
Puntos: 0
Respuesta: ordenar fechas

Hola te queria comentar que hago la consulta asi

(
Código MySQL:
Ver original
  1. FROM `0511`
  2. where id between 1 and 13
  3. order by str_to_date(valor,'%d/%m/%Y')

Y me ordena los datos como le da la gana, no me pone

1
2
3
4
5
6
7

me pone 3578910

¿Hay alguna otra forma de hacer que me muestre los datos ordenados de 1 al 13 y por fecha de ingreso?

Tengo un campo mes 105,205,305 y campo año 2005,2006,etc...

Gracias y perdona por ser tan torpe con mysql....

Última edición por gnzsoloyo; 21/10/2012 a las 16:22
  #2 (permalink)  
Antiguo 21/10/2012, 16:32
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: Ordenar fechas

Vamos por etapas:
Primero, no te cuelgues de un post ajeno para hacer una pregunta propia. Se considera una falta de cortesía en los foros.
Tampoco resucites un tema para eso. Uno lee los temas por el último post, sino por el primero.
Además, por política general de FDW, los temas resucitados los cerramos y con eso te quedas sin respuestas.
Es preferible que abras un tema propio. En este caso, lo generé separando tu pregunta (que no tenía relación estricta con el thread original, en un thread nuevo,.

Yendo puntualmente a tu problema, no se puede saber con exactitud por qué te ordena como dices, sin concoer el contenido eral de las tablas, en especial el campo "valor".
Detallando:
1. Los campos de fecha deben ser de tipo DATE, DATETIME o TIMESTAMP. ¿De qué tipo de columna es lo que estás poniendo?
2. ¿Que quieres decir con que "Tengo un campo mes 105,205,305"? ¿Un mes 105? ¿Cómo es posible?
3. ¿Por qué aparece el año en un campo separado, cuando lo puedes obtener del mismo campo de fecha?
4. ¿Qué es ese "1 al 13"? ¿Son fechas? ¿Son Ids?
5. Ten en cuenta que si son IDs, y ordenas por fecha, no necesariamente son conceptos que coincidan, si las fechas representan una cosa diferente al orden de entrada.

Explica un poco en qué consiste ese "ordenamiento", los datos y cómo es el tipo de campos que usas.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 21/10/2012, 16:50
 
Fecha de Ingreso: mayo-2008
Mensajes: 181
Antigüedad: 16 años
Puntos: 0
Respuesta: Ordenar fechas

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Vamos por etapas:
Primero, no te cuelgues de un post ajeno para hacer una pregunta propia. Se considera una falta de cortesía en los foros.
Tampoco resucites un tema para eso. Uno lee los temas por el último post, sino por el primero.
Además, por política general de FDW, los temas resucitados los cerramos y con eso te quedas sin respuestas.
Es preferible que abras un tema propio. En este caso, lo generé separando tu pregunta (que no tenía relación estricta con el thread original, en un thread nuevo,.

Yendo puntualmente a tu problema, no se puede saber con exactitud por qué te ordena como dices, sin concoer el contenido eral de las tablas, en especial el campo "valor".
Detallando:
1. Los campos de fecha deben ser de tipo DATE, DATETIME o TIMESTAMP. ¿De qué tipo de columna es lo que estás poniendo?

Te cuento el problema es que la importacion es de un excel a mysql, el campo fecha no es importante y se llama valor.Realmente no manda mucho y esta en modo varchar.

2. ¿Que quieres decir con que "Tengo un campo mes 105,205,305"? ¿Un mes 105? ¿Cómo es posible?
Sencillo si hacen el ingreso el 13/01/2005 en otra columna mes he añadido 105, año en vez de año como se hace el lio con las eñes le he puesto fecha
3. ¿Por qué aparece el año en un campo separado, cuando lo puedes obtener del mismo campo de fecha?
porque lo que interesa son los meses y años ingresados, el valor de la fecha se muestra pero no se tiene en cuenta porque lo que interesa es un orden logico o un listado en papel que se pueda utilizar...
4. ¿Qué es ese "1 al 13"? ¿Son fechas? ¿Son Ids?
son ids
5. Ten en cuenta que si son IDs, y ordenas por fecha, no necesariamente son conceptos que coincidan, si las fechas representan una cosa diferente al orden de entrada.

Explica un poco en qué consiste ese "ordenamiento", los datos y cómo es el tipo de campos que usas.
TE PIDO PERDON POR MOVER UN TEMA VIEJO PERO ES QUE ESTOY DESESPERADO EN SACAR LA INFORMACION DE LA MANERA ADECUADA....y no lo consigo.....

TODOS LOS CAMPOS SON VARCHAR

Te pongo como quiero que muestre mysql las cosas...no se si me explico.

Gracias de todas maneras

1 01/03/2005 10 305 2005
1 01/04/2005 10 405 2005
1 01/05/2005 10 505 2005
1 01/06/2005 10 605 2005
1 01/07/2005 20 705 2005
1 01/08/2005 10 805 2005
1 01/09/2005 10 905 2005
1 01/10/2005 40 1005 2005
1 01/11/2005 10 1105 2005
1 01/12/2005 10 1205 2005

2 01/02/2005 50 205 2005
2 03/04/2005 30 405 2005

3 01/01/2005 50 105 2005

3 02/06/2006 30 606 2006

Ojala que mysql mostrara la informacion asi, si ademas haga suma de subtotales genial...pero al final una query la hago para el listado y otro para las subtotales.....
1 xxx cantidad 2005
1 xxx cantidad 2006
1 xxx cantidad 2007

Gracias de todas maneras
  #4 (permalink)  
Antiguo 21/10/2012, 18:16
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: Ordenar fechas

El primer problema que tienes es lo que dices:
Cita:
TODOS LOS CAMPOS SON VARCHAR
Tienes cuatro valores en esa tabla de los cuales el primero debería ser un DATE, y los dos restantes INT...
Esa tabla por empezar esta mal definida, y también te traerá serios problemas en el ordenamiento porque un VARCHAR se ordena alfabeticamente...
Nunca obtendrás el ordenamiento correcto en tanto los valores sean VARCHAR.
Cita:
Ojala que mysql mostrara la informacion asi, si ademas haga suma de subtotales genial...pero al final una query la hago para el listado y otro para las subtotales.....
Obtener un orden y subtotales no es un problema. Sólo son operaciones distintas porque una se obtiene con ORDER BY y la otra con funciones agregadas (SUM, COUNT) y el GROUP BY.
Pero para darte una sugerencia, la tabla que nos muestras:
Cita:
1 01/03/2005 10 305 2005
1 01/04/2005 10 405 2005
1 01/05/2005 10 505 2005
1 01/06/2005 10 605 2005
1 01/07/2005 20 705 2005
1 01/08/2005 10 805 2005
1 01/09/2005 10 905 2005
1 01/10/2005 40 1005 2005
1 01/11/2005 10 1105 2005
1 01/12/2005 10 1205 2005

2 01/02/2005 50 205 2005
2 03/04/2005 30 405 2005

3 01/01/2005 50 105 2005

3 02/06/2006 30 606 2006
No nos dice qué representan cada columna (haz el favor de acordarte siempre de poner los nombres de las columnas), ni se puede ver si hay valores que parezcan relacionarse, por lo que no se ve qué hay que sumar y qué se debe agrupar. Entendiendo que el GROUP BY tiene las funciones sobre las columnas donde se sumará, contará, etc.
Trata de dar detalles concretos, que se relacionen con lo que estás haciendo, qué son los datos que usas. de lo contrario no es facil ayudarte.

En síntesis:
1) Hay que reformar esa tabla o bien usar funciones de conversión. Lo primeo sería mejor, pero tu dirás si es posible hacerlo (si la base ya está funcionando, el problema es mayúsculo).
2) Detalla el nombre de los campos, qué datos son, y cómo sería el agrupamiento y ordenamiento que buscas.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
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 05:06.