2010-08-15 3 views
7

Je dois créer un champ d'horodatage pour une table dont les lignes doivent expirer après un certain temps. Si j'utilise les éléments suivants:Créer un champ avec le temps par défaut

`timestamp` TIMESTAMP DEFAULT NOW(), 

Il montre le temps dans un format lisible par l'homme, il serait beaucoup plus facile si je pouvais l'avoir dans le temps de l'époque, donc je peux calculer avec secondes. Est-il possible de créer un champ qui affichera l'heure actuelle lorsqu'une ligne est créée par défaut? Merci!

Répondre

6

Vous pouvez utiliser la fonction UNIX_TIMESTAMP() dans vos déclarations SELECT, comme dans l'exemple suivant:

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 je vois, donc aucun moyen de le saisir de cette façon par défaut. Mais je peux l'utiliser dans mes déclarations 'select', mieux que rien. Merci Daniel! Je vous marquerai comme correct dès que SO me le permettra. –

+1

@Ben: En fait, le type de données 'TIMESTAMP' stocke les dates au format époque, selon les [docs] (http://dev.mysql.com/doc/refman/5.1/en/date-and-time-type -overview.html). Cependant, l'instruction 'SELECT' rend la valeur dans" human readable form ", par défaut. L'utilisation de la fonction 'UNIX_TIMESTAMP()' remplace cette mise en forme. –

+0

Ah, intéressant. Merci. J'apprécie l'aide! –

Questions connexes