2010-08-15 5 views
7

Мне нужно создать поле метки времени для таблицы, строки которой должны истечь через определенное количество времени. Если я использую следующее:Создать поле со значением по умолчанию как время эпохи

`timestamp` TIMESTAMP DEFAULT NOW(), 

Он показывает время в удобочитаемом формате, было бы намного проще, если бы я мог бы его вовремя эпохи, так что я могу рассчитывать с секундами. Есть ли способ создать поле, которое будет отображать текущее время, когда по умолчанию создается строка в эпоху? Благодаря!

ответ

6

Вы можете использовать функцию UNIX_TIMESTAMP() в ваших SELECT заявления, как в следующем примере:

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

А я не вижу, так что нет возможности ввести его таким образом по умолчанию. Но я могу использовать его в своих операциях 'select', лучше, чем ничего. Спасибо, Дэниэл! Я буду отмечать вас как можно скорее, как только SO позволит мне. –

+1

@Ben: Фактически, тип данных TIMESTAMP хранит даты в формате epoch, в соответствии с [docs] (http://dev.mysql.com/doc/refman/5.1/en/date-and-time-type -overview.html). Тем не менее, оператор SELECT выводит значение в «удобочитаемой форме» по умолчанию. Использование функции 'UNIX_TIMESTAMP()' отменяет это форматирование. –

+0

Ах, интересно. Благодарю. Я ценю помощь! –

Смежные вопросы