php mysql时间戳 - 几个问题

时间:2011-07-22 07:19:41

标签: php mysql timestamp

我有一个产品表,我已经添加了一个新字段作为时间戳。我不确定它应该是bigint字段还是时间戳字段。有什么不同,哪种能提供最佳性能?

我想将当前日期与时间戳值进行比较,如果差异大于X天(意味着产品不再可用),则从我的查询结果中排除产品。

我以前从未使用时间戳,我需要启动才能理解其用法,谢谢。

4 个答案:

答案 0 :(得分:0)

要将MySQL中的时间存储到秒,您可以选择

  • 时间戳
  • DATETIME

讨论了他们的关系here

但是长话短说,时间戳是一个整数,如果没有提供任何值,则自动设置。所以如果你想存储最后一次插入的时间,这是一个很好的选择。 datetime必须明确设置,并且是“光学上”格式为'YYYY-MM-DD HH:MM:SS'的字符串。但MySQL的处理速度非常快,所以TS不是更快,只是b / c它是一个整数。

特别是如果你想在超过<,>,=的时间内操作,那么我建议DATETIME。有很多功能可用。

答案 1 :(得分:0)

一般的想法是,您使用timestamp记录MySQL记录中的更改,因为每次更新记录时都会更新它们,并使用datetime来存储特定事件。

对于您在字段本身的操作,MySQL支持functions可以在日期时间进行计算。

就性能而言,时间戳占用的空间比日期时间更长,而且通常更快。

答案 2 :(得分:0)

Mysql时间戳是人类可读的。 (以下摘自MySQL网站)

  

E.g。   TIMESTAMP列以与DATETIME列相同的格式显示。换句话说,显示宽度固定为19个字符,格式为'YYYY-MM-DD HH:MM:SS'。

使用这些可以使用像DATE_ADD这样的MySQL函数,您可以在查询中使用它们。

或者您可以使用UNIX时间戳(MySQL字段类型INT)。然后你可以对值进行数学运算,然后使用PHP DATE函数格式化它(第二个参数是时间戳)。

答案 3 :(得分:0)

FOA,我们必须检查TIMESTAMP和DATETIME之间的差异。

  • TIMESTAMP
    • 需要4个字节
    • '1970-01-01 00:00:01'UTC到'2038-01-19 03:14:07'UTC(与UNIX纪元相同)
    • 读/写时将发生UTC转换。
    • 表只能有一个TIMESTAMP列。
  • DATETIME
    • 需要8个字节
    • '1000-01-01 00:00:00'至'9999-12-31 23:59:59
    • 没有转换。
    • 表可以有一个或多个DATETIME列。

通常,当我想跟踪记录的更改(如修改的日期时间)时,我使用TIMESTAMP,如果我想记录不变的日期和时间,则使用DATETIME。 (比如创建日期时间)

因此,如果您计划处理大量记录并且不需要超过纪元时间,那么TIMESTAMP就是更小更快的解决方案。但请注意,它具有我在上面提到的限制。

参考文献: