您建议使用datetime或timestamp字段吗?为什么(使用MySQL)?
我在服务器端使用PHP。
您建议使用datetime或timestamp字段吗?为什么(使用MySQL)?
我在服务器端使用PHP。
当前回答
+---------------------------------------------------------------------------------------+--------------------------------------------------------------------------+
| TIMESTAMP | DATETIME |
+---------------------------------------------------------------------------------------+--------------------------------------------------------------------------+
| TIMESTAMP requires 4 bytes. | DATETIME requires 8 bytes. |
| Timestamp is the number of seconds that have elapsed since January 1, 1970 00:00 UTC. | DATETIME is a text displays 'YYYY-MM-DD HH:MM:SS' format. |
| TIMESTAMP supported range: ‘1970-01-01 00:00:01′ UTC to ‘2038-01-19 03:14:07′ UTC. | DATETIME supported range: ‘1000-01-01 00:00:00′ to ‘9999-12-31 23:59:59′ |
| TIMESTAMP during retrieval converted back to the current time zone. | DATETIME can not do this. |
| TIMESTAMP is used mostly for metadata i.e. row created/modified and audit purpose. | DATETIME is used mostly for user-data. |
+---------------------------------------------------------------------------------------+--------------------------------------------------------------------------+
其他回答
当您有来自不同国家、不同时区的游客时,TIMESTAMP非常有用。您可以轻松地将TIMESTAMP转换为任何国家/地区的时区
在表上执行UPDATE语句时,请注意时间戳的更改。如果您有一个列为“Name”(varchar)、“Age”(int)和“Date_Add”(timestamp)的表,则运行以下DML语句
UPDATE table
SET age = 30
则“Date_Add”列中的每个值都将更改为当前时间戳。
我只在存储UTC时使用无符号BIGINT。。。
然后仍然可以在PHP中将其调整为本地时间。
要使用FROM_UNIXTIME(integer_timestamp_column)选择的DATETIME。
显然,应该在该列上设置索引,否则不会有任何进展。
这里的许多答案都建议将时间戳存储为时间戳,以防必须表示定义良好的时间点。但是,如果您按照惯例将所有时间点都存储在UTC中,那么您也可以使用datetime获取时间点。
我更喜欢使用时间戳,以便将所有内容保持在一个通用的原始格式中,并将数据格式化为PHP代码或SQL查询。在某些情况下,它可以在代码中方便地将所有内容保持在简单的秒数内。