2013-09-19 4 views
1

Я начинаю проектировать базу данных и, прежде чем слишком много записей будет введено, я хочу думать в будущее и собирать как можно больше данных. Я думаю, мне было бы полезно узнать, когда была добавлена ​​запись. Основываясь на вашем опыте, лучше делать это через mySQL через datetime или через php через функцию даты. Я буду использовать php для ввода всех значений, поэтому это будет просто другое поле.Лучше ли иметь штамп времени через mySQL или php?

До сих пор мне нравился подход php, потому что я могу настроить его на минимальное пространство: yymmddhhmm & часовой пояс.

Основываясь на вашем опыте, что является лучшим способом сохранить эти данные или два пути безразличны?

Кроме того, какой часовой пояс вы бы предложили использовать? Часовой пояс, где я располагаюсь или GMT? Лучше всего использовать GMT, если я скажу, что я должен был переехать позже, или если люди из нескольких часовых поясов управляют базой данных.

ответ

1

Хранить его как DATETIME/TIMESTAMP в MySQL, он все равно сохраняется как целое число, просто входит и выдается как метка времени. Храните данные в формате UTC.

Вы можете манипулировать меткой времени в PHP, построив ее с помощью DateTime(), а затем оттуда.

Это также позволяет поместить в столбец NOT NULL DEFAULT CURRENT_TIMESTAMP, что позволит вам активно создавать его в php.

0

Для простоты я предлагаю использовать временную метку MySQL. Поскольку база данных тогда понимает, что это такое, она хранится гораздо эффективнее, чем ваша текстовая версия (как число, а не строка символов), и вы можете сделать больше с ней.

Например:

mysql> CREATE TABLE foo (something TEXT NOT NULL, created TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP); 
Query OK, 0 rows affected (0.11 sec) 

mysql> INSERT INTO foo (something) VALUES ("one"); 
Query OK, 1 row affected (0.07 sec) 

mysql> INSERT INTO foo (something) VALUES ("two"); 
Query OK, 1 row affected (0.13 sec) 

mysql> SELECT * FROM foo; 
+-----------+---------------------+ 
| something | created    | 
+-----------+---------------------+ 
| one  | 2013-09-18 22:57:01 | 
| two  | 2013-09-18 22:57:03 | 
+-----------+---------------------+ 
2 rows in set (0.00 sec) 

mysql> SELECT something, NOW() - created as seconds_since_insert FROM foo; 
+-----------+----------------------+ 
| something | seconds_since_insert | 
+-----------+----------------------+ 
| one  |     136 | 
| two  |     134 | 
+-----------+----------------------+ 
2 rows in set (0.00 sec) 
Смежные вопросы