Я сохраняю время последнего входа в MySQL в datetime-типе. Когда пользователи входят в систему, я хочу получить разницу между временем последнего входа в систему и текущим временем (которое я использую NOW()).
В вашем случае третьим параметром TIMSTAMPDIFFфункции будет текущее время входа в систему ( NOW()). Вторым параметром будет время последнего входа в систему, которое уже есть в базе данных.
То есть обновить последний логин правильно ?? то, что я хочу, это как в stackoverflow ваш вопрос, опубликованный 2s назад, 30s ago, 2 min ago ... и т. д. Я хочу подобную функциональность. Например, есть одна таблица, скажем, REQUESTS (id, message, timestamp). отметка времени при сохранении будет СЕЙЧАС (). пока я выполняю запрос, выбираю * из запросов, вместо того, чтобы отображать это значение, он должен отображать идентификатор, сообщение и сколько времени назад был отправлен запрос.
Девеш Агравал
1
В то время как я выполняю запрос SELECT TIMESTAMPDIFF (SECOND, NOW (), 'выберите lastLoginTime из запросов, где id =' 2 ''). Возвращается NULL. Есть идеи почему ??
Девеш Агравал
что выводит select lastLoginTime из запросов, где id = '2'?
FSP
SELECT TIMESTAMPDIFF (SECOND, NOW (), '2012-06-06 08:07:36'); Попробуй это!
FSP
Да, это работает, но мне нужно получить второй параметр из таблицы. Как этого добиться. Infact я хочу, чтобы избежать вложенного запроса. Любая идея?
Ответы:
ИСПОЛЬЗУЙТЕ
TIMESTAMPDIFF
функцию MySQL. Например, вы можете использовать:В вашем случае третьим параметром
TIMSTAMPDIFF
функции будет текущее время входа в систему (NOW()
). Вторым параметром будет время последнего входа в систему, которое уже есть в базе данных.источник
мои два цента о логике:
синтаксис «старая дата» -: «новая дата», поэтому:
дает 30,
дает: -40
источник
Если ваши даты начала и окончания указаны в разные дни, используйте TIMEDIFF.
если datetime1> datetime2 тогда
дает: 24:01:00
и datetime1 <datetime2
дает: -24: 01: 00
источник