Есть ли способ сделать запрос в MySQL, который даст мне разницу между двумя временными метками за секунды, или мне нужно будет сделать это на PHP? И если да, как бы я это сделал?MySQL: как получить разницу между двумя временными метками в секундах
ответ
Вы можете использовать TIMEDIFF()
и TIME_TO_SEC()
функции следующим образом:
SELECT TIME_TO_SEC(TIMEDIFF('2010-08-20 12:01:00', '2010-08-20 12:00:00')) diff;
+------+
| diff |
+------+
| 60 |
+------+
1 row in set (0.00 sec)
Вы можете также использовать функцию UNIX_TIMESTAMP()
, как @Amber suggested в другой ответ:
SELECT UNIX_TIMESTAMP('2010-08-20 12:01:00') -
UNIX_TIMESTAMP('2010-08-20 12:00:00') diff;
+------+
| diff |
+------+
| 60 |
+------+
1 row in set (0.00 sec)
Если вы используете TIMESTAMP
тип данных, я думаю, что решение UNIX_TIMESTAMP()
будет немного быстрее, так как значения TIMESTAMP
уже сохранены как целое число, представляющее numbe г секунд с эпохи (Source). Цитирование в docs:
Когда
UNIX_TIMESTAMP()
используется наTIMESTAMP
колонке, функция возвращает значение внутренней временной метки непосредственно, без подразумеваемого «строка-к-Unix-временной метки» преобразования.Имейте в виду, что
TIMEDIFF()
return data type ofTIME
.TIME
значения могут варьироваться от '-838: 59: 59' до '838: 59: 59' (примерно 34,96 дней)
UNIX_TIMESTAMP(ts1) - UNIX_TIMESTAMP(ts2)
Если вы хотите разницу без знака, добавьте ABS()
вокруг выражения.
В качестве альтернативы вы можете использовать TIMEDIFF(ts1, ts2)
, а затем преобразовать результат времени в секундах с помощью TIME_TO_SEC()
.
Как о "TIMESTAMPDIFF":
SELECT TIMESTAMPDIFF(SECOND,'2009-05-18','2009-07-29') from `post_statistics`
http://www.w3resource.com/mysql/date-and-time-functions/mysql-timestampdiff-function.php
Если ваш столбец даты находится в другом формате, который YYYY-MM-DD попробует сделать это: 'str_to_date (date_column, '% m /% d /% Y')' в функции TIMESTAMPDIFF для столбца, который нуждается в его форматировании. – greaterKing
Обратите внимание, что решение TIMEDIFF()
работает только тогда, когда datetimes
менее чем за 35 дней! TIMEDIFF()
возвращает TIME
тип данных, а значение макс для TIME составляет 838: 59: 59 часов (= 34,96 дней)
- 1. Как получить разницу между двумя временными метками?
- 2. Разница MySql между двумя временными метками в секундах?
- 3. Вычислить разницу во времени между двумя временными метками в mysql
- 4. Разница MySql между двумя временными метками в днях?
- 5. Как найти разницу во времени между двумя временными метками?
- 6. Выберите разницу между двумя временными метками unix из 2 строк
- 7. вычислить разницу между двумя временными метками в php
- 8. FireBird - Рассчитать часовую разницу между двумя временными метками?
- 9. Perl вычислить разницу между 2 временными метками
- 10. Вычислить разницу между двумя временными метками с помощью javascript
- 11. Разница между двумя временными метками в пандах
- 12. Как найти разницу между двумя временными интервалами
- 13. Время между двумя временными метками (postgresql)
- 14. Проверить разницу в секундах между двумя значениями
- 15. Как получить разницу в секундах между двумя строками?
- 16. найти разницу между временными метками в JS и PHP
- 17. Как получить разницу между двумя метками времени в DB2?
- 18. Найти разницу между двумя временными отметками
- 19. Дата и время Разница между двумя временными метками?
- 20. Как я могу получить разницу между двумя временными метками с помощью Perl?
- 21. Как получить разницу между двумя датами в php
- 22. Неправильная часовая разница между двумя временными метками (hh: mm: ss)
- 23. Человеко-читаемая продолжительность между двумя временными метками UNIX
- 24. Как получить разницу во времени в секундах?
- 25. Разница между временными метками PHP десятичный формат
- 26. Perl: вычисление длительности между временными метками
- 27. Поиск дней между двумя временными метками unix в php
- 28. Получить данные из mysql между двумя временными отметками
- 29. разница между двумя временными метками (в днях) в оракуле
- 30. Разница между двумя временными метками в часах в оболочке korn
Можно также использовать [TIMESTAMPDIFF] (http://dev.mysql.com/ doc/refman/5.1/ru/date-and-time-functions.html # function_timestampdiff), который делает это в одной функции - просто установите параметр 'unit' в' SECOND'. – Mike
+1 для объяснения производительности. Я не использовал UNIX_TIMESTAMP(), потому что думал, что потребуется больше времени. – elcool