我在 php 中这样做是为了将 laSTLogin 存储在 mysql 日期时间列中
date('Y-m-d h:i:s') //which then gave > '2014-01-04 08:00:56'
然后保存
当我需要计算在线时间超过20分钟的用户时,我在mysql中是这样做的
SELECT * FROM `elc_users` WHERE TIMESTAMPDIFF( MINUTE , lastlogin, NOW( ) ) <20
它没有用,当我在 mysql 中进行跟踪时,Now()
给出了这个 > 2014-01-04 20:00:56
现在这不会让我获得 20 分钟的登录用户。
我该如何解决这个问题?
编辑
我在 phpMyAdmin 中手动插入了一条记录,以确保在具有默认值 current_timestamp
的 timestamp
列中出现时区问题,它给出了 2014-01- 05 06:48:21
。我在 phpMyAdmin 中运行了这个查询
SELECT created, NOW( ) `elc_users`
这给 2014-01-05 18:53:53
现在我还执行下面的代码来检查全局和 session 时区,我得到了 phpMyAdmin
mysql> SELECT @@global.time_zone, @@session.time_zone;
然后给 SYSTEM |系统
最佳答案
正如 Filip 所说,这可能是时区问题;您可以将脚本的时区更改为 MySQL 设置的任何时区,如下所示:
date_default_timezone_set('America/Los_Angeles');
关于php和mysql的日期时间差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20925406/