Рассчитайте разницу между двумя датами в MySQL

157

Я сохраняю время последнего входа в MySQL в datetime-типе. Когда пользователи входят в систему, я хочу получить разницу между временем последнего входа в систему и текущим временем (которое я использую NOW()).

Как я могу рассчитать это?

Девеш Агравал
источник

Ответы:

296

ИСПОЛЬЗУЙТЕ TIMESTAMPDIFFфункцию MySQL. Например, вы можете использовать:

SELECT TIMESTAMPDIFF(SECOND, '2012-06-06 13:13:55', '2012-06-06 15:20:18')

В вашем случае третьим параметром TIMSTAMPDIFFфункции будет текущее время входа в систему ( NOW()). Вторым параметром будет время последнего входа в систему, которое уже есть в базе данных.

FSP
источник
То есть обновить последний логин правильно ?? то, что я хочу, это как в 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 я хочу, чтобы избежать вложенного запроса. Любая идея?
Девеш Агравал
3

мои два цента о логике:

синтаксис «старая дата» -: «новая дата», поэтому:

SELECT TIMESTAMPDIFF(SECOND, '2018-11-15 15:00:00', '2018-11-15 15:00:30')

дает 30,

SELECT TIMESTAMPDIFF(SECOND, '2018-11-15 15:00:55', '2018-11-15 15:00:15')

дает: -40

ingconti
источник
2

Если ваши даты начала и окончания указаны в разные дни, используйте TIMEDIFF.

SELECT TIMEDIFF(datetime1,datetime2)

если datetime1> datetime2 тогда

SELECT TIMEDIFF("2019-02-20 23:46:00","2019-02-19 23:45:00")

дает: 24:01:00

и datetime1 <datetime2

SELECT TIMEDIFF("2019-02-19 23:45:00","2019-02-20 23:46:00")

дает: -24: 01: 00

Adi
источник
Обратите внимание, справиться можно только с датами до 839 часов
Caius Jard