我开始设计一个数据库,在输入太多记录之前,我想要考虑未来并收集尽可能多的数据。我想知道记录何时添加会对我有好处。根据您的经验,最好通过日期时间的mySQL或通过日期函数的PHP来完成此操作。我将使用php输入所有值,因此它只是另一个字段。
到目前为止,我喜欢php方法,因为我可以自定义它以占用最小的空间:yymmddhhmm&时区。
根据您的经验,存储此数据的最佳方式是什么,或者两种方式无关紧要?
另外,您建议使用什么时区?我所在的时区或GMT?是否最好使用GMT,如果我以后要移动,或者来自多个时区的人员管理数据库。
答案 0 :(得分:1)
将它作为DATETIME
/ TIMESTAMP
存储在MySQL中,无论如何它都存储为整数,只是进入并作为时间戳出来。以UTC格式存储数据。
您可以通过使用DateTime()构建它来操纵PHP中的时间戳,然后从那里开始。
这也允许你在列上放置一个NOT NULL DEFAULT CURRENT_TIMESTAMP
,这可以帮助你积极地在php中构建它。
答案 1 :(得分: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)