2010-08-15 18 views
7

Necesito crear un campo de marca de tiempo para una tabla cuyas filas deben caducar después de un cierto período de tiempo. Si utilizo el siguiente:Crear campo con el valor predeterminado como época de tiempo

`timestamp` TIMESTAMP DEFAULT NOW(), 

Se muestra la hora en un formato legible por humanos, sería mucho más fácil si pudiera tener en el tiempo época para que pueda calcular con segundos. ¿Hay alguna manera de que pueda crear un campo que muestre la hora actual cuando se crea una fila en tiempo de época de manera predeterminada? ¡Gracias!

Respuesta

6

Es posible que desee utilizar la función UNIX_TIMESTAMP() en sus declaraciones SELECT, como en el siguiente ejemplo:

CREATE TABLE test_tb (`timestamp` TIMESTAMP DEFAULT NOW()); 
INSERT INTO test_tb VALUES (DEFAULT); 

SELECT UNIX_TIMESTAMP(`timestamp`) epoch, `timestamp` FROM test_tb; 
+------------+---------------------+ 
| epoch  | timestamp   | 
+------------+---------------------+ 
| 1281834891 | 2010-08-15 03:14:51 | 
+------------+---------------------+ 
1 row in set (0.00 sec) 
+0

Ah veo, así que no hay manera de que se introduzca ese modo por defecto. Pero puedo usarlo en mis declaraciones 'select', mejor que nada. Gracias Daniel! Te marcaré tan correcto tan pronto como SO me lo permita. –

+1

@Ben: en realidad, el tipo de datos 'TIMESTAMP' almacena las fechas en formato epoch, de acuerdo con [docs] (http://dev.mysql.com/doc/refman/5.1/en/date-and-time-type -overview.html). Sin embargo, la instrucción 'SELECT' representa el valor en" forma legible por humanos ", por defecto. El uso de la función 'UNIX_TIMESTAMP()' anula este formato. –

+0

Ah, interesante. Gracias. Aprecio la ayuda! –

Cuestiones relacionadas