увеличить время на секунду

Статус
В этой теме нельзя размещать новые ответы.

Игорь

Новичок
увеличить время на секунду

Добрый день.

Имею два массива данных. Мастер -- детейл. Вывожу детейлные данные в табличку по очереди. Т.е. все детейлные данные для первой записи мастер-таблицы, второй записи мастер-таблицы, etc.

В массиве данных имеется поле -- время. Без даты. Например '14:15:34'

По техзаданию данные детейлной таблицы должны разделяться хитроумной строкой данных, в которой последнее время увеличено на 1 секунду.

Например, последняя запись в детейл наборе данных '14:15:34'. В разделителе должно стоять '14:15:35'

Вопрос: как элегантно решить эту задачу средствами PHP. В настоящее время я решил эту задачу средствами РСУБД, но это решение мне не нравится. Т.к. в мастер запросе приходится вызывать функцию max, а эта функция, как известно, очень ресурсоёмка.
 

Фанат

oncle terrible
Команда форума
не стыдно такой вопрос задавать?

-~{}~ 17.05.07 18:10:

только не надо принимать меня за идиота, и с придыханием спрашивать, что будет, если "последняя запись"имеет значение '14:15:59'.
 

Игорь

Новичок
Абсолютно не стыдно.
1. Уже достаточно времени прокопался, но элегантного решения не нашёл.
2. Временное решение найдено. Что не мешает на досуге заняться поиском другого.
3. Если Вам решение известно, но по каким-то религиозным соображениям Вы не намерены помочь сэкономить мне время, то было бы разумно
3.а. не плодить бессодержательных сообщения аля какой я умный, и какие здесь все тупые говнописатели (термин из ваших постов)
3.б. если действительно хочется узнать у меня, стыдно мне или не стыдно, на это есть личные сообщения. И даже электропочта.

[email protected]

Так что если у Вас будут ко мне ещё вопросы личного плана -- смело пишите.

Этим Вы сэкономите трафик и время, а следовательно и деньги читателям форума.
 

Фанат

oncle terrible
Команда форума
ну ты и зануда.
особенно смешно весь этот пафос смотрится рядом с задачей, которая не поставит в тупик прилежного третьеклассника.
 

Игорь

Новичок
Особенно смешно смотрится Ваш ментроский тон.

Фанат, Вы вообще какой реакции от меня ожидаете? Что я скажу, ой спасибо Фанат, теперь я знаю, что я говнописатель, интеллектом ниже третеклассника?

Поймите, Фанат, на форуме разные люди, и не нужно их чморить и учить чему-то. Цели и задачи у всех разные. Если Вы побуждаете меня заняться вплотную изучением PHP -- то Вы в пустую израсходуете силы. Для меня PHP побочный инструмент решения прикладных задач. И бросить всё своё время и силы на освоение PHP я не имею физической возможности.

А форум для меня время сберегающий инструмент.

И вообще, давайте договоримся, Фанат. Форум большой. И если Вы и далее настроены читать мне нотации, вместо дельных ответов, то я думаю, что нам достаточно на нём места, чтобы не пересекаться. Договорились?

Кстати, не смотря на то, что Вы утверждаете, что задача тривиальна, ни одного ответа я до сих пор не узрел. Либо вашего авторитета бояться, либо ... на этом мысль обрывается.
 

Фанат

oncle terrible
Команда форума
Я не побуждаю тебя заняться изучением пхп.
в третьем классе пхп ещё не проходят. А сложение времени - проходят.

Ведь в уме ты с легкостью можешь решить эту задачу!
Неужели совсем невозможно построить алгоритм?

почему ты весь свой интеллект направляешь на качание прав и указания, что мне делать?
не хочешь ЧУТЬ-ЧУТЬ напрячься и решить несложную арифметическую задачку?
 

Игорь

Новичок
Я не качаю права. Вы совершенно не так понимаете мои посты. Возможно стараюсь призвать быть немного толерантнее.

Про напрячься: Да решил я задачу. Напрягся и решил. Но не так, как хотелось бы.

На вскидку:
1. Парсер строки. Решение кривое, т.к. вызовет много гемороя при анализе чего-нибудь такого, навроде "59.59.59"

2. Перевод в секунды, сложение, перевод во время. Либо маны плохо читал, либо не нашёл ничего применительного к этой задаче.
 

kruglov

Новичок
Фанат
Ну, может он про строковые функции, в частности [m]explode[/m], не в курсе?

-~{}~ 17.05.07 19:00:

p.s. Ой, в курсе...

Игорь
А во что вообще должно превращаться 59.59.59?
 

dark-demon

d(^-^)b
В настоящее время я решил эту задачу средствами РСУБД, но это решение мне не нравится. Т.к. в мастер запросе приходится вызывать функцию max
показывай решение :) чувствую намутил ты там что-то страшное...
 

Игорь

Новичок
Ну хорошо. Пойдём с другой стороны.

Есть ли готовые функции, которые могут помочь в решении этой задачи? Или сразу писать функции timestr_to_sec и sec_to_timestr?
 

Игорь

Новичок
2kruglov: логично в 00:00:00

dark-daemon

Мастер-запрос:
Код:
select max(tme)::time + interval '1 sec' as tme, h.num_kass from history h, providers p
where h.dte = '2007-05-14'
and h.provider_id = p.id
and p."owner" = 3
group by h.num_kass
order by h.num_kass
В общем-то в поле tme искомое значение. После того, как переберу весь детейл-запрос, который отсортирован по времени, это значение как раз и будет временем, увеличенным на секунду.

Да. Забыл сказать РСУБД -- PostgreSQL.

-~{}~ 17.05.07 19:09:

Автор оригинала: kruglov
Это смотря из скольких тысяч значений выбирать.
Совершенно верно, но таблицы склонны к росту. Так что делать вызов max там, где можно прекрасно обойтись без него -- не самое продуктивное решение.
 

Фанат

oncle terrible
Команда форума
Перевод в секунды, сложение, перевод во время. Либо маны плохо читал, либо не нашёл ничего применительного к этой задаче.
неужели операторы умножения, сложения и деления в мане отсутствуют?
 

kruglov

Новичок
Еще таблицы склонны иметь индексы.

Вообще, в вашей задаче я практически ничего не понял, в запросе вы узнаете максимальное время из кучи записей. Прекрасно. Наверное, для удовлетворения мутного ТЗ так и надо...

Но я совершенно не понимаю, как вообще вычисление времени, на секунду большее, чем некое данное, может быть альтернативой нахождению максимального времени из таблицы?
 

Игорь

Новичок
Фанат, Вы имеете ввиду, что в PHP отсутствуют функции, которые могут прибавить секунду ко времени? И также нет возможности сделать связку подобных процедур?

Например TimeToStr(IncTime(StrToTime,1))

Так и скажите.

Или Вы имеете ввиду что-то иное?
 

tf

крылья рулят
Игорь, (немного глупый вопрос) поиском пользовались?
 

Фанат

oncle terrible
Команда форума
Игорь
я имею в виду, что перевести часы и минуты в секунды - это несколько арифметических действий.
перевести секунды в часы и минуты - это тоже несколько арифметических действий.
и для этих нескольких арифметических действий совсем не нужны специальные функции

-~{}~ 17.05.07 19:25:

tf
их сиятельству форум служит для экономии времени
а поиск это время только отнимает
 

Игорь

Новичок
dark-demon:

мастер таблица
Код:
tme	num_kass
12:56:43	6
16:47:23	8
15:11:17	9
17:23:40	10
17:57:58	11
15:52:17	14
16:28:10	55
[code]


В детейл:
[code]
tme	            op	   summ	     ident	
14:29:08	47	242,35	 21000027
16:38:15	64	1193	  21000756
16:39:46	59	627,05	 21003061
16:41:20	81	1491,39	21006352
16:42:08	59	970,39	 21003042
16:42:58	64	2297,81	21000446
16:44:04	50	313,53	 21000624
16:45:43	64	0	     21000527
16:47:22	56	0	     21001891
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху