您建议使用datetime或timestamp字段吗?为什么(使用MySQL)?
我在服务器端使用PHP。
您建议使用datetime或timestamp字段吗?为什么(使用MySQL)?
我在服务器端使用PHP。
当前回答
时间戳数据类型存储日期和时间,但使用UTC格式,而不是像datetime那样使用当前时区格式。当您获取数据时,时间戳再次将其转换为当前时区时间。
所以假设你在美国,从一个时区为美国的服务器获取数据,然后你将根据美国时区获取日期和时间。时间戳数据类型列总是在其行更新时自动更新。因此,跟踪上次更新特定行的时间可能很有用。
有关更多详细信息,您可以阅读博客文章Timestamp Vs Datetime。
其他回答
我喜欢Unix时间戳,因为你可以转换成数字,只需担心数字。此外,您还可以添加/减去和获取持续时间等。然后将结果转换为任何格式的日期。这段代码找出文档的时间戳和当前时间之间经过了多少时间(以分钟为单位)。
$date = $item['pubdate']; (etc ...)
$unix_now = time();
$result = strtotime($date, $unix_now);
$unix_diff_min = (($unix_now - $result) / 60);
$min = round($unix_diff_min);
时间戳字段是datetime字段的特殊情况。您可以创建具有特殊财产的时间戳列;它可以设置为在创建和/或更新时更新自己。
在“更大”的数据库术语中,时间戳有两个特殊的情况触发器。
正确的答案完全取决于你想做什么。
在表上执行UPDATE语句时,请注意时间戳的更改。如果您有一个列为“Name”(varchar)、“Age”(int)和“Date_Add”(timestamp)的表,则运行以下DML语句
UPDATE table
SET age = 30
则“Date_Add”列中的每个值都将更改为当前时间戳。
TIMESTAMP需要4个字节,而DATETIME需要8个字节。
在使用MySQL和PHP时,我总是使用Unix时间戳。这主要是因为PHP中的默认日期方法使用时间戳作为参数,因此不需要解析。
要获取PHP中当前的Unix时间戳,只需执行time();在MySQL中执行SELECT UNIX_TIMESTAMP();。