【发布时间】:2012-02-27 05:23:22
【问题描述】:
我计划在 php 中使用 time() 来捕获用户在我的网站上发起的活动的开始和结束。我不确定这是否是捕获开始/结束时间的最佳方式。无论如何,数据将存储在 MySQL 中,但我再次不确定我应该使用什么数据类型。 根据我在 stackoverflow 上阅读的答案,使用的数据类型取决于应用程序的目的。
申请目的
- 最简单的方法是,我想记录一个事件的开始、停止(和持续时间) 活动。可能使用 time()。
- 在最复杂的情况下,我想根据何时绘制统计数据 用户做了某项活动,他们花了多少时间做 活动(总计),以及何时最成功/最不成功 成功等,等等(都基于开始/结束时间) 记住。用户将来自世界各地。
更多信息 如果重复某项活动,则会为其创建新记录。记录不会更新。
起初,我计划在 MySQL 中存储 unix 时间戳(作为整数数据类型?),但据我了解,这是一个坏主意,因为我将失去很多 MySQL 处理信息的能力。如果我将信息存储为 DATETIME,然后移动服务器,则所有时间都会根据服务器的本地时间而改变。我发现令人困惑的是 MySQL 中的 TIMESTAMP 与 unix 时间戳不同——如果我使用 time(),我会得到它。
我知道对于某些系统,unix 时间戳最多只能保存 2038 年的日期,但这不是问题(目前)。
问题:我应该使用 time() 来捕获用户发起活动的开始和结束时间吗?根据申请目的,what datatype should I use to store the start and stop of user initiated activities?
谢谢
感谢大家的回答。 TBH 我不相信任何一种方式,所以我还在做一些研究。我选择了 TIMESTAMPS 选项,因为我真的很想使用 UTC (GMT) 来存储我的信息。遗憾的是,我会失去一些 MySQL 内置的时间功能。无论如何,再次感谢您的回答。
【问题讨论】:
-
@zerkms 为什么推荐时间戳?
-
因为它支持所有
datetime功能并且还知道时区