Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/262.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/59.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
Php “已创建”和“已更新”列的时间戳与日期时间_Php_Mysql_Datetime_Timestamp - Fatal编程技术网

Php “已创建”和“已更新”列的时间戳与日期时间

Php “已创建”和“已更新”列的时间戳与日期时间,php,mysql,datetime,timestamp,Php,Mysql,Datetime,Timestamp,我使用的是PHP/MySQL,我一直使用DATETIME来存储创建的和更新的值,但我认为可能有更好的方法 我应该改用时间戳吗?如果是,为什么?说明: 时间戳值从当前时区转换为UTC进行存储,并从UTC转换回当前时区进行检索。(这仅适用于时间戳数据类型,而不适用于其他类型,如DATETIME。)默认情况下,每个连接的当前时区是服务器的时间。时区可以根据每个连接进行设置,如第9.6节“MySQL服务器时区支持”所述。只要时区设置保持不变,就可以返回存储的相同值。如果存储时间戳值,然后更改时区并检索该

我使用的是PHP/MySQL,我一直使用DATETIME来存储
创建的
更新的
值,但我认为可能有更好的方法

我应该改用时间戳吗?如果是,为什么?

说明:

时间戳值从当前时区转换为UTC进行存储,并从UTC转换回当前时区进行检索。(这仅适用于时间戳数据类型,而不适用于其他类型,如DATETIME。)默认情况下,每个连接的当前时区是服务器的时间。时区可以根据每个连接进行设置,如第9.6节“MySQL服务器时区支持”所述。只要时区设置保持不变,就可以返回存储的相同值。如果存储时间戳值,然后更改时区并检索该值,则检索到的值与存储的值不同。发生这种情况是因为两个方向的转换没有使用相同的时区。当前时区可用作时区系统变量的值


因此,如果希望将日期/时间存储在UTC而不是当前时区中,则可能需要使用时间戳。

时间戳存储在数据库中的UTC时间中。然后,根据您的时区设置,无论何时获取它,它都会自动适当地调整偏移量。如果您关心为应用程序设置时区,那么一定要使用时间戳。

根据您的回答,可能存在重复的,可以安全地说,在处理时区时,DateTime类型将该责任传递给您的业务逻辑,而时间戳类型将该责任传递给服务器时间(或者取决于操作系统中的设置)?从某种意义上说,正确的答案不应该是DateTime,因为我们程序员在不考虑操作系统中的设置的情况下,可以更好地控制以UTC存储时间吗?