Я сделал это в php, чтобы сохранить lastlogin в столбце datetime mysql
date('Ymd 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, чтобы убедиться, что проблема с часовым поясом в столбце timestamp
со значением по умолчанию current_timestamp
, он дал 2014-01-05 06:48:21
. Я выполнил этот запрос в phpMyAdmin
SELECT created, NOW( ) `elc_users`
это дало 2014-01-05 18:53:53
Теперь я также выполняю код ниже, чтобы проверить глобальный и сеансовый часовые пояса, и я получил phpMyAdmin
mysql> SELECT @@global.time_zone, @@session.time_zone;
который затем дал SYSTEM | SYSTEM
SYSTEM | SYSTEM
Как сказал Филип, это, вероятно, проблема с часовым поясом; вы можете изменить часовой пояс своего скрипта на любой часовой пояс, на который настроен ваш MySQL:
date_default_timezone_set('America/Los_Angeles');
Чтобы избежать таких проблем, проверьте следующее.
system time
и system timezone
как сервера БД, так и сервера приложений одинаковы. dateTime
. Лично я предлагаю вам написать общую функцию где-то в вашем коде, и всякий раз, когда вам нужно получить текущее время, используйте эту функцию вместо использования NOW()
Я не думаю, что это будет проблемой в часовом поясе, поскольку PHP и MySQL работают на одной машине, поэтому оба получат одинаковое время при вызове текущего времени. Может быть, вы можете попробовать это, потому что я попробовал это на своей машине, как вы сказали.
SELECT * FROM `elc_users` WHERE lastlogin < date_add(NOW(), INTERVAL -20 MINUTE)
Я решил проблему, удалив столбец даты и создав ее снова. теперь это записано в правильном формате
timestamp
дал 2014-01-04 20:58:56
и NOW()
дал 2014-01-04 20:58:56
спасибо за всех, кто внес свой вклад, это не вопрос часового пояса, поскольку @AbdulJabbarWebBestow упоминается
еще раз спасибо