0

您好,我需要将 $_SESSION['login_time'] = time() 存储在 mysql 表中,我需要为其创建一个类似“login-time”的列,但我对这两种数据类型“timestamp”和“datetime”感到困惑。在这种情况下,哪一个会是有效的。请帮我...

谢谢

4

2 回答 2

1

如果您使用 PHP 的time()函数来获取要插入的时间,它会返回自 UNIX 纪元 (Jan 1 1970 00:00:00 GMT) 以来的时间(以秒为单位)。由于 MySQLdatetime数据类型支持的范围更广('1000-01-01 00:00:00' 到 '9999-12-31 23:59:59'),并且timestamp数据类型支持 '1970-01-01 00': 00:01' UTC 到 '2038-01-19 03:14:07' UTC(从哪里time()开始),你可以继续使用,timestamp因为它在概念上匹配得更好一些。(除非您计划在 2038 年之后存储日期,在这种情况下,请疯狂使用datetime)。两者都适用于您的情况,但日期类型与时间戳问题提供了有关使用的更多信息。

于 2013-03-16T14:41:09.310 回答
0

显然,在这里,时间戳是最好的选择。当出现这样的问题时,唯一的回答方法是“我存储的内容是什么意思”。登录时间是您将多次更新的“时间点”。因此,在您面临的两种类型之间,您将选择表示“时间点”而不是“日历日期和时钟时间”的一种。DateTime 在这里存储所有已过时的内容。TimeStamp 只是在这里标记时间。

登录时间根据定义一个时间戳,所以使用 Timstamp 类型必须更明智和更高效。

这个答案的唯一限制是时间戳在技术上限制为 2038。

于 2013-03-16T14:49:16.257 回答