Сравнение метки времени базы данных с настоящим временем - PullRequest
0 голосов
/ 25 марта 2019

У меня есть несколько записей в базе данных MySQL с одним из полей, которое отслеживает время создания записи. Он имеет тип 'timestamp' с установленным по умолчанию значением CURRENT_TIMESTAMP. Я пытаюсь получить доступ ко всем записям старше 5 минут. Я использовал следующий запрос на странице PHP:

SELECT username FROM liveusers WHERE timejoined < NOW() - INTERVAL 5 MINUTE)

По какой-то причине он не выбирает никаких записей, и я не уверен, как это исправить. Код PHP в порядке, так как он выбирает все записи, если я уберу условие. Что я делаю не так?

Ответы [ 2 ]

0 голосов
/ 25 марта 2019

Сначала вы сравниваете метку времени с датой.Сначала необходимо выполнить преобразование даты, например, используя UNIX_TIMESTAMP()

5 минут - 300 секунд.Давайте представим, что кто-то присоединился к 50, а NOW() - это 301 (оно должно быть «новее» ).WHERE timejoined < UNIX_TIMESTAMP(NOW() - INTERVAL 5 MINUTE) станет -> WHERE 50 < 301 - 300 <- false </p>

Вы хотите написать:

WHERE timejoined > UNIX_TIMESTAMP(NOW() - INTERVAL 5 MINUTE)

Схема (MySQL v5.7)


Запрос № 1

SELECT UNIX_TIMESTAMP(NOW() - INTERVAL 4 MINUTE) > UNIX_TIMESTAMP(NOW() - INTERVAL 5 MINUTE) AS "is 4 minutes ago \"newer\" ?";

| is 4 minutes ago "newer" ? |
| -------------------------- |
| 1                          |

Запрос № 2

SELECT UNIX_TIMESTAMP(NOW() - INTERVAL 6 MINUTE) > UNIX_TIMESTAMP(NOW() - INTERVAL 5 MINUTE) AS "is 6 minutes ago \"newer\" ?";

| is 6 minutes ago "newer" ? |
| -------------------------- |
| 0                          |

Просмотр на БД Fiddle

0 голосов
/ 25 марта 2019

Я предлагаю вам использовать DATE_SUB:

SELECT username FROM liveusers WHERE timejoined > DATE_SUB(NOW(),INTERVAL 5 MINUTE);

https://www.w3schools.com/sql/func_mysql_date_sub.asp

Вы делали сравнение по-другому.Более новые записи должны иметь большую дату, чем 5 минут назад.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...