我有一个产品表,我已经添加了一个新字段作为时间戳。我不确定它应该是bigint字段还是时间戳字段。有什么不同,哪种能提供最佳性能?
我想将当前日期与时间戳值进行比较,如果差异大于X天(意味着产品不再可用),则从我的查询结果中排除产品。
我以前从未使用时间戳,我需要启动才能理解其用法,谢谢。
答案 0 :(得分:0)
要将MySQL中的时间存储到秒,您可以选择
讨论了他们的关系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,如果我想记录不变的日期和时间,则使用DATETIME。 (比如创建日期时间)
因此,如果您计划处理大量记录并且不需要超过纪元时间,那么TIMESTAMP就是更小更快的解决方案。但请注意,它具有我在上面提到的限制。
参考文献: