Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过mySQL或php设置时间戳更好吗?_Php_Mysql_Timestamp With Timezone - Fatal编程技术网

通过mySQL或php设置时间戳更好吗?

通过mySQL或php设置时间戳更好吗?,php,mysql,timestamp-with-timezone,Php,Mysql,Timestamp With Timezone,我开始设计一个数据库,在输入太多记录之前,我想考虑未来,收集尽可能多的数据。我想我最好知道这张唱片是什么时候加的。根据您的经验,通过mySQL通过datetime还是通过php通过date函数来实现这一点更好。我将使用php来输入所有的值,因此它只是另一个字段 到目前为止,我喜欢php方法,因为我可以自定义它以占用最少的空间:yymmddhhmm&timezone 根据您的经验,存储这些数据的最佳方式是什么,或者这两种方式是不同的 另外,您建议使用哪个时区?我所在的时区还是格林尼治标准时间?如果

我开始设计一个数据库,在输入太多记录之前,我想考虑未来,收集尽可能多的数据。我想我最好知道这张唱片是什么时候加的。根据您的经验,通过mySQL通过datetime还是通过php通过date函数来实现这一点更好。我将使用php来输入所有的值,因此它只是另一个字段

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

根据您的经验,存储这些数据的最佳方式是什么,或者这两种方式是不同的


另外,您建议使用哪个时区?我所在的时区还是格林尼治标准时间?如果说我以后要搬家,或者如果来自多个时区的个人管理数据库,最好使用GMT。

将其存储为
DATETIME
/
TIMESTAMP
在MySQL中,它存储为整数,只是作为时间戳输入和输出。以UTC格式存储数据

您可以在PHP中操作时间戳,方法是使用DateTime()构造时间戳,然后从那里开始


这还允许您在列上放置一个
非空默认的当前时间戳
,这样您就不用在php中主动构建它了。

将它存储为
日期时间
/
时间戳
在MySQL中,它存储为一个整数,只是作为时间戳输入和输出。以UTC格式存储数据

您可以在PHP中操作时间戳,方法是使用DateTime()构造时间戳,然后从那里开始


这还允许您在列上放置一个
非空默认当前时间戳
,这样您就不用在php中主动构建它了。

为了简单起见,我建议使用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)

为了简单起见,我建议使用MySQL的timestamp字段。因为数据库可以理解它是什么,所以它的存储效率比文本版本(作为一个数字,而不是一个字符串)要高很多,而且您可以用它做更多的事情

例如:

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)