通过mySQL或php获得时间戳更好吗?

时间:2013-09-19 03:38:10

标签: php mysql timestamp-with-timezone

我开始设计一个数据库,在输入太多记录之前,我想要考虑未来并收集尽可能多的数据。我想知道记录何时添加会对我有好处。根据您的经验,最好通过日期时间的mySQL或通过日期函数的PHP来完成此操作。我将使用php输入所有值,因此它只是另一个字段。

到目前为止,我喜欢php方法,因为我可以自定义它以占用最小的空间:yymmddhhmm&时区。

根据您的经验,存储此数据的最佳方式是什么,或者两种方式无关紧要?

另外,您建议使用什么时区?我所在的时区或GMT?是否最好使用GMT,如果我以后要移动,或者来自多个时区的人员管理数据库。

2 个答案:

答案 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)