PHP/MySQL-关于存储时间戳的困惑

PHP/MySQL-关于存储时间戳的困惑,php,mysql,Php,Mysql,我需要在PHP/MySQL表单中存储表单提交的时间戳。我希望能够以最灵活的方式查询这个字段,以便在PHP中显示数据。什么样的MySQL数据类型是最佳实践,我应该使用哪个PHP函数来存储/检索数据?在数据库中使用DATETIME或DATE: 什么样的MySQL数据类型是最佳实践,我应该使用哪个PHP函数来存储/检索数据 我会将此数据存储为MySQL提供的时间戳数据类型。与下面列出的DATETIME或INT等其他存储选项相比,这有很多优点 它特别用于存储特定的时间瞬间。无论服务器位于哪个时区,my

我需要在PHP/MySQL表单中存储表单提交的时间戳。我希望能够以最灵活的方式查询这个字段,以便在PHP中显示数据。什么样的MySQL数据类型是最佳实践,我应该使用哪个PHP函数来存储/检索数据?

在数据库中使用DATETIME或DATE:

什么样的MySQL数据类型是最佳实践,我应该使用哪个PHP函数来存储/检索数据


我会将此数据存储为MySQL提供的
时间戳
数据类型。与下面列出的
DATETIME
INT
等其他存储选项相比,这有很多优点

  • 它特别用于存储特定的时间瞬间。无论服务器位于哪个时区,mysql客户端位于哪个时区,存储在
    TIMESTAMP
    字段中的常量
    CURRENT_TIMESTAMP
    值始终指向绝对时间线中的同一时刻
  • 在内部,它使用4字节的存储空间,与
    INT
    数据类型的存储空间相同
  • 它将在常规查询中为您提供外观美观、人类可以理解的值
  • 此外,这些漂亮的值被转换为连接到它的客户端的时区。这可能对你有好处也可能有坏处。如果mysql时区表已填充或类似于
    set timezone='+5:30'
    ,则始终可以使用
    set timezone='timezone'
    将其更改为所需的时区,包括UTC。后者只有在所需时区没有夏令时调整时才有效
  • 您的查询可以利用MySQL理解此字段表示日期这一事实。所以您可以运行如下查询:获取过去3年中发生在5月份的所有注册
  • 使用内置函数更改显示格式以显示unix时间戳或任何其他有效形式

不知道你说的是什么时间戳,但对于unix时间戳,你需要INT-type字段。

可能与你说的“绝对时间线”重复?最终我们必须将时间表示转换为物理世界中的事件。这就是我在这里所指的绝对时间线。比如说伦敦奥运会的开幕式。无论您使用哪种时间格式(如ISO8601、W3C)、时区(如UTC、IST、PDT)表示它,它都将始终指向相同的时间实例。DATETIME数据类型没有附加时区信息,因此客户端必须从其他来源获取此信息,以指向时间线上有意义的点。