una soporta segundo rapida por optimizar mas lentas lenta hacer cuello cuantas consultas consulta como botella agilizar mysql timestamp

soporta - optimizar consultas mysql explain



columna de marca de tiempo mysql (5)

¿Es posible definir una columna de marca de tiempo en una tabla MySQL que se actualizará automáticamente cada vez que se modifique un campo en la misma fila? Idealmente, esta columna debería establecerse inicialmente a la hora en que se insertó una fila.

Saludos, Don


Esa es la funcionalidad predeterminada del tipo de columna de marca de tiempo . Sin embargo, tenga en cuenta que el formato de este tipo es aaaammddhhmmss (todos los dígitos, sin dos puntos u otra separación).

EDITAR: El comentario anterior sobre el formato solo es cierto para las versiones de MySQL <4.1 ... Las versiones posteriores lo formatean como DateTime


Esto es lo que he observado (MySql 5.7.11) -

La primera columna TIMESTAMP en la tabla obtiene la marca de tiempo actual como el valor predeterminado. Por lo tanto, si realiza un INSERT o UPDATE sin proporcionar un valor, la columna obtendrá la marca de tiempo actual.

Cualquier columna TIMESTAMP posterior debe tener un valor predeterminado explícitamente definido. Si tiene dos columnas TIMESTAMP y no especifica un valor predeterminado para la segunda columna, obtendrá este error al intentar crear la tabla -

ERROR 1067 (42000): valor predeterminado no válido para ''COLUMN_NAME''


IIRC, la primera columna de una tabla de tipo de marca de tiempo se establece cuando se crea un registro y no se puede cambiar. La segunda columna del tipo de marca de tiempo se establece cada vez que se actualiza un registro. O viceversa.

No he trabajado mucho en MySQL, por lo que querrá verificar esto.


Puede usar la columna de marca de tiempo como otros carteles mencionados. Aquí está el SQL que puede usar para agregar la columna en:

ALTER TABLE `table1` ADD `lastUpdated` TIMESTAMP ON UPDATE CURRENT_TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ;

Esto agrega una columna llamada ''lastUpdated'' con un valor predeterminado de la fecha / hora actual. Cuando ese registro se actualiza (digamos 5 minutos más tarde) esa marca de tiempo se actualizará automáticamente a la hora actual.


Una marca de tiempo de MySQL se establece con la creación o la hora de actualización solo si su valor predeterminado se establece como tal. ALTER TABLE some_table ADD when TIMESTAMP DEFAULT CURRENT_TIMESTAMP .
De lo contrario, funciona igual que un campo DateTime, solo que es relativo al UTC de 01/01/1981, por lo que es un momento absoluto en el tiempo que no depende de una zona horaria específica como es DateTime.