Member 13637584 Ответов: 1

Как получить последний вход в систему?


Привет, у меня есть БД с lastactive, которая при входе пользователя в текущую дату переходит в это поле. Мой текущий часовой пояс также вводит неправильное время для меня тоже.

Я хочу иметь возможность получить разницу в том, когда они были активны в последний раз?

Кто-нибудь может помочь? Нужно ли мне два поля

Что я уже пробовал:

- просто обновите sql-запрос, который обновляет время входа пользователя в систему.

1 Ответов

Рейтинг:
2

Jochen Arndt

Всегда храните даты и время в формате UTC и в двоичном формате. Тогда у вас не будет проблем с часовыми поясами, разницей во времени и преобразованиями строк. Избегайте также получения времени из разных источников (особенно из клиентских систем).


Member 13637584

Как я могу установить его в UTC? Я использую базу данных MySQL

Jochen Arndt

Как вы теперь его устанавливаете?

MySQL хранит datetimes внутренне всегда в UTC, но использует часовой пояс сеанса при установке или запросе datetimes. Таким образом, он должен работать уже тогда, когда позволяет SQL вычислять разность времен. Чтобы получить время в UTC, используйте UTC_TIMESTAMP(). См.также CONVERT_TZ (). Вы также можете настроить MySQL на использование UTC вместо системного часового пояса.

Member 13637584

Я пробовал это сделать, но теперь он дает мне 2 часа, но мне нужно 3 часа дня.

Jochen Arndt

Как вы устанавливаете метку времени?
Переход из кода или использование SQL?
С MySQL использование NOW() для установки lastactive и получения разницы между NOW() и lastactive должно работать.

Member 13637584

У меня есть таблица обновления набора lastActive= NOW (), но его ок нужно изменить время сервера. Как я могу рассчитать разницу сейчас от последнего входа в систему??

Jochen Arndt

TIMESTAMPDIFF(MINUTE, tableName.lastActive, NOW())
или другой блок по мере необходимости.

Member 13637584

Говорит вызов неопределенной функции timestampdiff?

Jochen Arndt

Это функция MySQL. Вы действительно используете MySQL или назвали его PHP-кодом (вне команды SQL)?

Member 13637584

Как я могу назвать его PHP?

Jochen Arndt

Вы должны вызвать его как часть команды SQL, потому что это функция MySQL. Если это не сработает, то ваша база данных-это не MySQL!

Вы могли бы это раздражало именование с MySQL из PHP-интерфейса базы данных. Но он также может быть использован с другими движками баз данных, кроме MySQL.

Если это так, вы должны прочитать о том, как используемая база данных хранит и обрабатывает даты.

Member 13637584

Моя база данных-MySQL. Я попытался вставить его, но это ошибка. Можете ли вы помочь с заявлением?

Jochen Arndt

Все что я могу сделать это указать на документацию:
https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html