Обчисліть різницю між двома датами в 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()). Другим параметром буде останній час входу, який вже є в базі даних.


Тобто оновити останнє право входу ?? що я хочу, як у stackoverflow ваше запитання, розміщене 2 роки тому, 30-х років тому, 2 хвилини тому .. і т. д. Я хочу подібний функціонал. Наприклад, є одна таблиця з вимогою ЗАПИТАННЯ (id, повідомлення, часова марка). позначка часу під час зберігання буде ЗАРАЗ (). поки я запускаю запит, виберіть * із запитів *, замість того, щоб відображати це значення, воно повинно відображати ідентифікатор, повідомлення та скільки часу запиту назад.
Девеш Агравал

1
Під час виконання запиту SELECT TIMESTAMPDIFF (SECOND, NOW (), 'select lastLoginTime з запитів, де id =' 2 '') .. Його повернення NULL. Будь-яка ідея, чому ??
Девеш Агравал

який результат вибору lastLoginTime з запитів, де id = '2'?
FSP

ВИБІР ТІМЕСТАМПДІФФ (ДРУГИЙ, ЗАРАЗ (), '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


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


Зауважте, можна впоратися лише з датами, які мають відстань до 839 годин
Кайус Джард
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.