2010-08-15 18 views
7

Ho bisogno di creare un campo data/ora per una tabella le cui righe devono scadere dopo un certo periodo di tempo. Se uso il seguente:Crea campo con impostazione predefinita come epoca

`timestamp` TIMESTAMP DEFAULT NOW(), 

Indica il tempo in un formato leggibile, sarebbe molto più facile se potessi avere in tempo nell'epoca in modo da poter calcolare con secondi. C'è un modo per creare un campo che visualizzi l'ora corrente quando una riga viene creata in epoca epoch per impostazione predefinita? Grazie!

risposta

6

Si consiglia di utilizzare la funzione di UNIX_TIMESTAMP() nelle SELECT dichiarazioni, come nel seguente esempio:

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 vedo, quindi non c'è modo di avere è entrato in questo modo per impostazione predefinita. Ma posso usarlo nelle mie dichiarazioni 'select', meglio di niente. Grazie Daniele! Ti contrassegnerò come corretto non appena SO mi consentirà. –

+1

@ Ben: in realtà, il tipo di dati 'TIMESTAMP' memorizza le date in formato epoch, in base al [docs] (http://dev.mysql.com/doc/refman/5.1/en/date-and-time-type -overview.html). Tuttavia, l'istruzione 'SELECT' restituisce il valore in" formato leggibile ", per impostazione predefinita. L'uso della funzione 'UNIX_TIMESTAMP()' sovrascrive questa formattazione. –

+0

Ah, interessante. Grazie. Apprezzo l'aiuto! –

Problemi correlati