mysql时间戳或日期时间

mysql时间戳或日期时间,mysql,datetime,timestamp,Mysql,Datetime,Timestamp,您好,我需要在mysql表中存储$\u SESSION['login\u time']=time(),我需要为其创建一个类似“login time”的列,但我对这两种数据类型“timestamp”和“datetime”感到困惑。在这种情况下,哪一个更有效。请帮帮我 谢谢如果您使用PHP的time()函数获取要插入的时间,它将以秒为单位返回时间。由于MySQL的datetime数据类型支持的UTC时间比它大('1000-01-01 00:00:00'到'9999-12-31 23:59:59'),

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


谢谢

如果您使用PHP的
time()
函数获取要插入的时间,它将以秒为单位返回时间。由于MySQL的
datetime
数据类型支持的UTC时间比它大('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()开始的地方开始),您可以继续使用
时间戳
,因为它在概念上更匹配。(除非您计划在2038年之后存储日期,否则在这种情况下,请疯狂使用
datetime
)。这两种方法都适用于您的情况,但问题提供了更多关于使用的信息。

很明显,在这里,时间戳是最佳选择。 当这样一个问题出现时,唯一的答案就是“我储存的东西的意义是什么”。登录时间是一个“时间点”,您将多次更新。 因此,在您面临的两种类型中,您将选择表示“时间点”而不是“日历日期和时钟时间”的类型。 DateTime用于存储所有已注明日期的内容。时间戳就是用来标记时间的

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


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

你可以在这里找到你的问题的正确方向-你可能想提到
时间戳的“自动更新”行为(它可以被覆盖),但通常会让不熟悉的人感到意外。