В общем есть в БД хранится время, тип ячейки - Time(00:00:00)...
Записей много, и мне их надо сложить. Делаю так:
SELECT SUM(TIME_TO_SEC (`t_time`))
И вот как теперь мне вывести на страничку полученные секунды в формате time?
date("H:i:s") понимает только до 24 часов...
Спустя 6 минут, 5 секунд (10.10.2011 - 15:35) Brajt написал(а):
если правильно понял, то можно вывести в цикле весь столбец time, перевести в цикле все часы в секунды, прибавить переведенные минуты в секунды и прибавить секунды. - получится время в секундах для каждой ячейки. и потом сложить)
Спустя 4 минуты, 16 секунд (10.10.2011 - 15:39) rooor написал(а):
Brajt
Запрос, который я написал, складывает время в столбце, на выходе получаются секунды.
Вот эти секунды мне и надо вывести на страничку в виде чч:мм:сс, но секунд может быть, например, 150000
Запрос, который я написал, складывает время в столбце, на выходе получаются секунды.
Вот эти секунды мне и надо вывести на страничку в виде чч:мм:сс, но секунд может быть, например, 150000
Спустя 5 минут, 13 секунд (10.10.2011 - 15:45) Winston написал(а):
А так ?
$res = mysql_query("SELECT SUM(TIME_TO_SEC (`t_time`)) AS `t_sec` FROM `tbl`");
$res = mysql_fetch_assoc($res);
echo date('H:i:s', $res['t_sec']);
Спустя 2 минуты, 15 секунд (10.10.2011 - 15:47) Brajt написал(а):
150000 / 86400 = 1 сутки
150000 - 86400 = 63600 / 3600 = 17 часов
(63600 - 3600*17) / 60 = 40 минут
150000 - 86400 = 63600 / 3600 = 17 часов
(63600 - 3600*17) / 60 = 40 минут
Спустя 24 секунды (10.10.2011 - 15:47) linf написал(а):
Логичнее в базу записывать значение в Уникс Времени date("U"), в простую INT ячейку. и не возится с типом Time. Плюсы такого решения:
+ Такая запись может быть и универсальным идентификатором чего либо.
+ Удобнее такой датой оперировать для вычисления интервалов и сортировки "новое-старое"
+ Не создавать мега-геморойный скрпт получения (ввода) текущего времени в TIME формате базы.
Если же потом необходимо вывести дату в человеческом виде, делается это просто:
+ Такая запись может быть и универсальным идентификатором чего либо.
+ Удобнее такой датой оперировать для вычисления интервалов и сортировки "новое-старое"
+ Не создавать мега-геморойный скрпт получения (ввода) текущего времени в TIME формате базы.
Если же потом необходимо вывести дату в человеческом виде, делается это просто:
echo date('d.m.Y', $date_unix);
Спустя 1 минута, 17 секунд (10.10.2011 - 15:49) killer8080 написал(а):
SELECT SUM(TIME_TO_SEC (`t_time`)) AS `time`
$seconds = $row['time'] % 60;
$minutes = floor($row['time'] / 60) % 60;
$hours = floor($row['time'] / 3600);
Спустя 1 минута, 39 секунд (10.10.2011 - 15:50) rooor написал(а):
Winston
Именно так и делаю)
Но echo
выводит 01:13:20
Именно так и делаю)
Но echo
date('H:i:s', /*тут переменная, в которой 80000 секунд*/);
выводит 01:13:20
Спустя 7 минут, 46 секунд (10.10.2011 - 15:58) killer8080 написал(а):
rooor
а мой вариант чем не устроил?
а мой вариант чем не устроил?
Спустя 1 минута, 13 секунд (10.10.2011 - 15:59) rooor написал(а):
linf
Надо будет подумать) Пока не поздно базу переделать
killer8080
Тоже вариант, но не хотелось бы городить переменные... и если будет 1 час, то напишет без ведущего нуля
Надо будет подумать) Пока не поздно базу переделать
killer8080
Тоже вариант, но не хотелось бы городить переменные... и если будет 1 час, то напишет без ведущего нуля
Спустя 9 минут, 16 секунд (10.10.2011 - 16:09) killer8080 написал(а):
Цитата (rooor @ 10.10.2011 - 15:59) |
и если будет 1 час, то напишет без ведущего нуля |
да не вопрос
$seconds = sprintf('%02u', $row['time'] % 60);
$minutes = sprintf('%02u', floor($row['time'] / 60) % 60);
$hours = sprintf('%02u', floor($row['time'] / 3600));
Спустя 3 минуты, 5 секунд (10.10.2011 - 16:12) linf написал(а):
Цитата (rooor @ 10.10.2011 - 16:59) |
linf Надо будет подумать) Пока не поздно базу переделать |
Подумай. Я например по дате вывожу картинку к определенному материалу.
<IMG src='<? echo $date_unix; ?>.jpg'>
Это избавляет от необходимости содержать в MySQL таблице дополнительное поле для названия изображения.
Очень удобно, так как материалы, чаще чем раз в секунду не добавляются, а значит имя файла (изображения) уникально =)
Спустя 5 минут, 22 секунды (10.10.2011 - 16:17) killer8080 написал(а):
Цитата (linf @ 10.10.2011 - 16:12) |
так как материалы, чаще чем раз в секунду не добавляются, а значит имя файла (изображения) уникально =) |
Я бы не стал зарекаться, возможны и накладки
Спустя 21 минута, 5 секунд (10.10.2011 - 16:38) linf написал(а):
Цитата (killer8080 @ 10.10.2011 - 17:17) | ||
Я бы не стал зарекаться, возможны и накладки |
Лично я говорю про ручное добавление материалов в базу данных, например через админку сайта. Больше двух в секунду ну не как не добавить, если вы конечно не СУПЕРМЭН
Спустя 8 минут, 12 секунд (10.10.2011 - 16:46) killer8080 написал(а):
Цитата (linf @ 10.10.2011 - 16:38) |
Лично я говорю про ручное добавление материалов в базу данных, например через админку сайта. Больше двух в секунду ну не как не добавить, если вы конечно не СУПЕРМЭН |
А если параллельно работают несколько модераторов? Пусть вероятность и крайне мала, но она не исключена. Тогда надёжней было бы использовать микротайм или дописывать рандомное число. Ну ладно не буду спорить
Спустя 2 часа, 28 минут, 18 секунд (10.10.2011 - 19:15) rooor написал(а):
Ну картинки мне загружать не надо...
В принципе мне такой вариант идеально подходит)
В принципе мне такой вариант идеально подходит)
Спустя 1 минута, 56 секунд (10.10.2011 - 19:17) rooor написал(а):
Но опять-таки на выходе мы получим секунды)
Кроме предложения killer8080 больше никак не вывести?
Ладно, буду делать так.
Кроме предложения killer8080 больше никак не вывести?
Ладно, буду делать так.
Спустя 2 минуты, 54 секунды (10.10.2011 - 19:19) Winston написал(а):
Цитата (rooor @ 10.10.2011 - 15:59) |
но не хотелось бы городить переменные |
Запихнуть код в функцию.
Спустя 13 часов, 14 минут, 26 секунд (11.10.2011 - 08:34) killer8080 написал(а):
rooor
если код будет многократно использоваться, то просто запихнуть в функцию
если код будет многократно использоваться, то просто запихнуть в функцию
function make_time_string($time){
return sprintf('%02u', floor($time / 3600)) . ':' .
sprintf('%02u', floor($time / 60) % 60) . ':' .
sprintf('%02u', $time % 60);
}
Спустя 1 минута, 13 секунд (11.10.2011 - 08:35) rooor написал(а):
killer8080
Ага, работает) Спасибо
Ага, работает) Спасибо