Есть таблица Mysql, в ней столбец "data" с типом datetime. Нужно взять текущую дату и время и посчитать разницу с табличным значением и вывести результат в формате dd-hh-mm
SELECT SEC_TO_TIME(UNIX_TIMESTAMP(now())-UNIX_TIMESTAMP(users.data)) from users where UserId=999929921;
пробовал вот так, все работает до тех пор, пока разница между датами не больше 1 дня, далее выводится ошибка, так как SEC_TO_TIME
работает в интервале 24 часов к сожалению.
Собственно вопрос, как правильно написать запрос?
Можно например как нибудь так:
concat(lpad(floor((@h:=time_format(@tm:=timediff(now(), users.data), '%H'))/24), 2, '0'),
'-',
lpad(@h % 24, 2, '0'),
'-',
time_format(@tm, '%i'))
Вопрос в том, а стоит ли делать такие громоздкие конструкции в SQL, если на клиенте обычно гораздо больше средств для форматирования времени.
Пример на SQLFiddle.com
Можно получить diff в секундах и делением с округлением в меньшую сторону построить нужную дату. Вот пример без форматирования и только для дней-часов. Остальное, думаю, не сложно дописать, если решение устроит.
SELECT
t.total_seconds,
t.total_days,
FLOOR((t.total_seconds - (t.total_days * 24 * 60 * 60)) / (60 * 60)) AS total_hours
FROM (
SELECT
t.total_seconds,
FLOOR(t.total_seconds / (24 * 60 * 60)) AS total_days
FROM (
SELECT TIME_TO_SEC(
TIMEDIFF("2018-12-25 18:40:00", "2018-12-23 15:20:30")
) AS total_seconds
) t
) t
Вывод:
total_seconds total_days total_hours
184770 2 3
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Каким образом можно вынести текст в placeholder в левый верхний угол окна ввода?
У меня есть анимация, и она работает четко во всех браузерах, но когда я открываю страницу через Microsoft Edge, моя анимация не работает, и я не вижу...
Как работать с элементами, которые находятся внутри другого элемента?