Problema con el campo DATETIME en MySQL

publicado por: Anonymous

En mi base de datos MySQL en phpMyAdmin tengo una tabla en la que cuando introduzco una fecha en un campo de la tabla se me pone la fecha en formato con milisegundos.

Al pulsar encima del campo para seleccionar una fecha del calendario me aparece de la siguiente forma:

introducir la descripción de la imagen aquí

Con la barra para seleccionar los milisegundos. Y si selecciono un día cualquiera, el campo se guarda de esta forma:

introducir la descripción de la imagen aquí

He probado a cambiar la configuración de la tabla y eliminar y volver a crear el campo pero sigue ocurriendo lo mismo. Me ocurre en cualquier campo de tipo DATETIME.

Ésta es la configuración de esta tabla en concreto:

introducir la descripción de la imagen aquí

¿Qué puede estar ocurriendo?

solución

El problema que sufres es debido a que has definido el campo usando un parámetro entre paréntesis (o quizá a través de un editor de tablas o GUI que te agregó ese valor).

Si defines un campo con DATETIME(6) los campos de fecha tendrán 6 cifras decimales:

CREATE TABLE test (
  fecha DATETIME(6)
);

Para crear correctamente la tabla debes usar DATETIME sin ningún valor entre paréntesis o bien un valor (0) para indicar “0 cifras decimales”:

CREATE TABLE test (
  fecha DATETIME(0)
);

Para cambiar la definición sin perder los datos almacenados en la tabla puedes usar:

ALTER TABLE test
  MODIFY fecha DATETIME(0);

Si lo que quieres es únicamente año, mes y día entonces debes usar un tipo DATE en su lugar:

ALTER TABLE test
  MODIFY fecha DATE;

Puedes ver un ejemplo en línea en este enlace.

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *