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

diferentes resultados al utilizar el MAX

Estas en el tema de diferentes resultados al utilizar el MAX en el foro de Mysql en Foros del Web. Hola, tengo una duda muy grande ya que tengo campo del registro definido como DATE, y cuando hago un MAX(fecha) me devuelve un valor que ...
  #1 (permalink)  
Antiguo 16/09/2010, 02:11
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1
Antigüedad: 13 años, 7 meses
Puntos: 0
diferentes resultados al utilizar el MAX

Hola, tengo una duda muy grande ya que tengo campo del registro definido como DATE, y cuando hago un MAX(fecha) me devuelve un valor que no es correcto.

mysql> desc EO;
+-----------+-------------+------+-----+------------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------+-------------+------+-----+------------+-------+
| id_cliente | int(11) | NO | PRI | 0 | |
| fecha| date | NO | PRI | 0000-00-00 | |
| numLinks | int(11) | YES | | NULL | |
| origen | tinyint(4) | NO | | 0 | |
+-----------+-------------+------+-----+------------+-------+
4 rows in set (0.01 sec)


mysql> select max(DATE_FORMAT(fecha,"%Y-%m-%d")) from EO ;
+-----------------------------------+
| max(DATE_FORMAT(fecha,"%Y-%m-%d")) |
+-----------------------------------+
| 2010-09-16 |
+-----------------------------------+
1 row in set (0.00 sec)

mysql> select max(fecha) from EO ;
+------------+
| max(fecha) |
+------------+
| 2010-09-13 |
+------------+
1 row in set (0.00 sec)


Como veis, el MAX(fecha) me devuelve el dia "2010-09-13" cuando realmente tengo registros con la fecha "2010-06-16" (la cual incluso el valor lexicográfico tendría que ser mayor)

Alguien sabe porque me pasa, incluso con la definicion del tipo a "DATE" ??
  #2 (permalink)  
Antiguo 16/09/2010, 02:24
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: diferentes resultados al utilizar el MAX

Imagino que el campo DATE tiene los datos introducidos con el formato YYYY-mm-dd. ¿Has probado esto?:
select max(fecha) fechaultima from EO ;
o esto
select fecha fechaultima from EO ORDER BY fecha DESC LIMIT 1;
Respecto al por qué te pasa, creo que es porque mediante DATE_FORMAT conviertes la fecha en cadena, y es el MAX de esa cadena lo que evalúa; no el max del valor de fecha.

Última edición por jurena; 16/09/2010 a las 03:06
  #3 (permalink)  
Antiguo 16/09/2010, 07:30
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: diferentes resultados al utilizar el MAX

La verdad creo que estas viendo las fechas de una forma diferente y esto responde a un error visual.

mira este ejemplo

Código MySQL:
Ver original
  1. mysql> create table fechita(fecha date);
  2. Query OK, 0 rows affected (0.05 sec)
  3.  
  4. mysql> insert into fechita values('2010-09-13');
  5. Query OK, 1 row affected (0.01 sec)
  6.  
  7. mysql> insert into fechita values('2010-09-16');
  8. Query OK, 1 row affected (0.00 sec)
  9.  
  10. mysql> select max(fecha) from fechita;
  11. +------------+
  12. | max(fecha) |
  13. +------------+
  14. | 2010-09-16 |
  15. +------------+
  16. 1 row in set (0.02 sec)
  17.  
  18. mysql> select max(date_format(fecha,'%Y-%m-%d')) from fechita;
  19. +------------------------------------+
  20. | max(date_format(fecha,'%Y-%m-%d')) |
  21. +------------------------------------+
  22. | 2010-09-16                         |
  23. +------------------------------------+
  24. 1 row in set (0.00 sec)

Fijate que en cualquiera de los casos la fecha mayor responde bien.

saludos andresfm y jurena
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #4 (permalink)  
Antiguo 16/09/2010, 11:53
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: diferentes resultados al utilizar el MAX

Estoy con huesos en que el resultado debería ser el mismo, aunque usar DATE_FORMAT() no es lo más adecuado, porque te ordenaría por la cadena de valor máximo; no obstante en este caso sería lo mismo, aunque no en otros; lo que me resulta sospechoso es que estés usando ese campo DATE como primary key... ¿Puede ser?

Etiquetas: diferentes, max, resultados, utilidades
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 06:27.