获得用户注册时间?

时间:2012-07-23 21:53:31

标签: php mysql date

我正在开发一个PHP应用程序,它以MySQL数据库为中心,我希望自动记录用户的注册时间。

  • 哪个更好?使用PHP的日期函数或者MySQL有一个当前的时间戳选项(我认为它确实如此)。
  • 如果MySQL更好(在准确性方面)那么我将如何实现它?表格结构是什么?
  • 如果PHP更好(就准确性而言)那么最直接的做法是什么?

感谢您的帮助!

4 个答案:

答案 0 :(得分:2)

查看MySQL DateTime参考。

我建议在MySQL中使用UTC_TIMESTAMP(),然后将时区从等式中取出并且非常准确。

mysql> SELECT UTC_TIMESTAMP(), UTC_TIMESTAMP() + 0;
    -> '2003-08-14 18:08:04', 20030814180804.000000

如果你将它用作一个字符串,你将获得日期格式,如果你将它用作数字选择器,你将得到一个数值。

答案 1 :(得分:1)

以下MYSQL代码将执行此操作:

INSERT INTO table_name (date_field) VALUE (now())

就准确性而言,MYSQL将最接近插入时间,但PHP和MYSQL之间的差异非常小,不会产生任何影响。

答案 2 :(得分:1)

插入记录时可以使用MySQL函数UNIX_TIMESTAMP()

PHP和MySQL都将使用系统时钟的时间,因此无论您使用哪种结果,结果都应该相同。时间戳也以UTC格式存储,因此可以轻松切换到用户的时区。

IMO,你使用它(PHP或MySQL时间)没有任何区别,但我会将注册时间存储在INT列中作为时间戳。

插入内容可能如下所示:

INSERT INTO `user`
(id, username, registrationTime)
VALUES
(NULL, 'rgbc', UNIX_TIMESTAMP());

答案 3 :(得分:1)

我会按顺序回答这些问题。

  • 我总是建议使用MySQL的时间函数(即NOW()),因为它可以提供更清晰,更高效的代码。虽然性能差异很小,但在INSERT查询中使用NOW()比使用PHP的date()函数设置变量然后在查询中调用它更简单。

  • 如果您寻求的准确性,请使用InnoDB引擎作为您的数据库。示例结构将是:id(int auto_increment),name(tinytext),password(tinytext),salt(tinytext),registerd_date(DATETIME)。密码和salt列用于使用安全的哈希密码(类似于SHA512)。

  • 在我看来,PHP可能是最简单的。最直接的方法是进行常规注册表单,然后使用NOW()记录注册发生的日期和时间。

祝你好运,

大卫