2012-02-19 7 views
5

Tengo una tabla con esta columna:MySQL: intentar insertar un valor en una marca de tiempo genera un error

last_modified timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

Y parece que no puedo insertar una fila con una marca de tiempo de encargo, me sale este error :

Incorrect datetime value: '1145868501' for column 'last_modified' at row 1

estoy tratando de llenar esta tabla con los datos procedentes de otra tabla, que otra tabla sólo tiene un campo CREATION_TIME que es una fecha y hora, así que uso UNIX_TIMESTAMP (CREATION_TIME) para llenar la marca de tiempo.

Creo que la columna de marca de tiempo con "DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP" me impide insertar mis propias cosas, ¿verdad? En caso afirmativo, ¿dónde está el documento oficial al respecto y cuál es la mejor solución? ¿Crea primero una marca de tiempo simple y luego modifica la tabla después de insertar datos?

Gracias!

EDITAR: dado que las personas me aconsejan que no use UNIX_TIMESTAMP, debo decir que no quería usar eso al principio, pero obtuve este tipo de error: Valor de fecha y hora incorrecto: '2010-03 -28 02:15:51 'para la columna' last_modified ' Así que pensé que tenía que insertar una marca de tiempo "real" ...

+1

¿Intentó sin aplicar 'creation_time' con' UNIX_TIMESTAMP'? –

+0

En realidad es lo que probé primero, tampoco funcionó :-( –

+1

¿Qué pasó? ¿Cómo no funcionó? –

Respuesta

1

Puede insertar explícitamente un valor en una columna TIMESTAMP. Leer: TIMESTAMP Properties

The auto-update TIMESTAMP column, if there is one, is automatically updated to the current timestamp when the value of any other column in the row is changed from its current value. If all other columns are set to their current values, the TIMESTAMP column does not change. Automatic updating does not apply if the TIMESTAMP column is explicitly assigned a value other than NULL.


actualización

Jeje, el error se produce porque - bien no había fecha y hora con '2010-03-28 02:15:51'! Esto fue en el horario de verano intervalo de tiempo (que suele aparecer algún día en marzo, entre las 02:00 - 03:00 o 03:00 - 04:00

Ver:... Daylight Saving Time explicación

+0

¡Buena captura! ¿Cuál sería el truco para manejar eso? –

+0

Necesita saber qué zona horaria se usó para almacenar estas fechas. –

+0

Me temo que tengo que arreglar esas fechas una por una, la base de datos se ha alojado en varios servidores durante los últimos 5 años.De todos modos, no debería tener demasiadas filas con este problema. ¡Gracias a todos los que se tomaron el tiempo para ayudarme! –

1

Usted está tratando de poner un entero largo en un campo de fecha y hora que no funcionan Retire la llamada a UNIX_TIMESTAMP() y debería funcionar

el tipo MySQL TIMESTAMP es casi idéntico a un DATETIME;... que sólo tiene un poco de magia de actualización automática adicional en lo que SELECT y uPDATE se refiere, es un DATETIME.

+2

No solo la actualización automática, sino la magia de zonas horarias (que es una característica mucho más importante) – zerkms

+0

Sí. Pero mi punto es que no es un sello de tiempo entero de Unix. :-) – staticsan

Cuestiones relacionadas