【问题标题】:mysql timestamp or datetimemysql时间戳或日期时间
【发布时间】:2013-03-16 14:31:27
【问题描述】:

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

谢谢

【问题讨论】:

标签: mysql datetime timestamp


【解决方案1】:

如果您使用 PHP 的 time() 函数来获取您想要插入的时间,它会以秒为单位返回时间 since the UNIX Epoch (Jan 1 1970 00:00:00 GMT)。由于 MySQL datetime 数据类型支持 broader range 而不是('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)。两者都适用于您的情况,但datetype vs timestamp 问题提供了更多关于使用的信息。

【讨论】:

    【解决方案2】:

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

    登录时间定义为时间戳,因此使用 Timstamp 类型必须更明智、更高效。

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

    【讨论】:

    • 您可能想提及TIMESTAMP 的“自动更新”行为(可以被覆盖),但经常会让外行感到意外。
    猜你喜欢
    • 1970-01-01
    • 2013-06-16
    • 1970-01-01
    • 2022-01-24
    • 2015-01-14
    • 1970-01-01
    • 2011-10-01
    • 2013-08-07
    • 1970-01-01
    相关资源
    最近更新 更多