systemadmin.es > DBA > Fechas mal formadas en MySQL

Fechas mal formadas en MySQL

Haciendo una query en un MySQL con una fecha mal formada, a priori, yo esperaría que no devolviera ningún resultado. Podemos comprobar que MySQL considera mejor devolver algún resultado, aunque sean en realidad TODOS los resultados.

Si hacemos un explain de una query con una fecha malformada:

mysql> explain select * from sales where creationDate < '2012-08-27T17:00:02+02:00'\W;
Show warnings enabled.
+----+-------------+-------+------+---------------+------+---------+------+---------+-------------+
| id | select_type | table | type | possible_keys | key  | key_len | ref  | rows    | Extra       |
+----+-------------+-------+------+---------------+------+---------+------+---------+-------------+
|  1 | SIMPLE      | sales | ALL  | NULL          | NULL | NULL    | NULL | 6750684 | Using where |
+----+-------------+-------+------+---------------+------+---------+------+---------+-------------+
1 row in set, 2 warnings (0.01 sec)

Warning (Code 1292): Incorrect datetime value: '2012-08-27T17:00:02+02:00' for column 'creationDate' at row 1

Podemos ver que nos informa con un Warning que tenemos la fecha mal formada, pero me parece muy curioso que decida hacer un full table scan y devolver todos los resultados en lugar de no devolver ninguno.

Deja un comentario:

XHTML - Tags permitidos:<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>