Всем привет!
Вот какая есть задача, запросом выбираются данные, а именно, разность двух дат, надо их вывести в красивом виде, ЧЧ:мм:сс
Запрос передается в универсальный отчет и там выводится
Чего только не пробовал, получается какаято фигня.
Через конкатенацию строк нельзя, т.к. там числа и они не преобразовываются, через тип даты тоже никак.
Пробовал вычислять кол-во минут и часов, умножать их на 100 и 10000 и выводить с разделителями, но тоже косяки с расчетами.
например вот так
РАЗНОСТЬДАТ(ВремяПриходаПоставки, ВремяНачалаСканирования, ЧАС) * 10000 + (РАЗНОСТЬДАТ(ВремяПриходаПоставки, ВремяНачалаСканирования, МИНУТА) - РАЗНОСТЬДАТ(ВремяПриходаПоставки, ВремяНачалаСканирования, ЧАС) * 60) * 100 + РАЗНОСТЬДАТ(ВремяПриходаПоставки, ВремяНачалаСканирования, СЕКУНДА) - РАЗНОСТЬДАТ(ВремяПриходаПоставки, ВремяНачалаСканирования, МИНУТА) * 60
но фишка в том, что для 1:30:00 и 2:05:00
РАЗНОСТЬДАТ(ВремяПриходаПоставки, ВремяНачалаСканирования, ЧАС) вернет 1
а РАЗНОСТЬДАТ(ВремяПриходаПоставки, ВремяНачалаСканирования, МИНУТА) вернет 35
Округление не помогает
Если бы я это делал в коде, то можно было бы сделать через остаток от деления.
Нет ли нормального способа это вывести? Голову уже сломал.
Вот какая есть задача, запросом выбираются данные, а именно, разность двух дат, надо их вывести в красивом виде, ЧЧ:мм:сс
Запрос передается в универсальный отчет и там выводится
Чего только не пробовал, получается какаято фигня.
Через конкатенацию строк нельзя, т.к. там числа и они не преобразовываются, через тип даты тоже никак.
Пробовал вычислять кол-во минут и часов, умножать их на 100 и 10000 и выводить с разделителями, но тоже косяки с расчетами.
например вот так
РАЗНОСТЬДАТ(ВремяПриходаПоставки, ВремяНачалаСканирования, ЧАС) * 10000 + (РАЗНОСТЬДАТ(ВремяПриходаПоставки, ВремяНачалаСканирования, МИНУТА) - РАЗНОСТЬДАТ(ВремяПриходаПоставки, ВремяНачалаСканирования, ЧАС) * 60) * 100 + РАЗНОСТЬДАТ(ВремяПриходаПоставки, ВремяНачалаСканирования, СЕКУНДА) - РАЗНОСТЬДАТ(ВремяПриходаПоставки, ВремяНачалаСканирования, МИНУТА) * 60
но фишка в том, что для 1:30:00 и 2:05:00
РАЗНОСТЬДАТ(ВремяПриходаПоставки, ВремяНачалаСканирования, ЧАС) вернет 1
а РАЗНОСТЬДАТ(ВремяПриходаПоставки, ВремяНачалаСканирования, МИНУТА) вернет 35
Округление не помогает
Если бы я это делал в коде, то можно было бы сделать через остаток от деления.
Нет ли нормального способа это вывести? Голову уже сломал.
По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(10) А если так?
ВЫБРАТЬ
ПОДСТРОКА("0123456789", ДЕНЬ(&Дата1) / 10 + 1, 1) + ПОДСТРОКА("0123456789", СЕКУНДА(ДОБАВИТЬКДАТЕ(ДАТАВРЕМЯ(1, 1, 1), СЕКУНДА, 6 * ДЕНЬ(&Дата1))) / 6 + 1, 1) + "/" + ПОДСТРОКА("0123456789", МЕСЯЦ(&Дата1) / 10 + 1, 1) + ПОДСТРОКА("0123456789", СЕКУНДА(ДОБАВИТЬКДАТЕ(ДАТАВРЕМЯ(1, 1, 1), СЕКУНДА, 6 * МЕСЯЦ(&Дата1))) / 6 + 1, 1) + "/" + ПОДСТРОКА("0123456789", ГОД(&Дата1) / 1000 + 1, 1) + ПОДСТРОКА("0123456789", СЕКУНДА(ДОБАВИТЬКДАТЕ(ДАТАВРЕМЯ(1, 1, 1), СЕКУНДА, ГОД(&Дата1) * 0.06)) / 6 + 1, 1) + ПОДСТРОКА("0123456789", СЕКУНДА(ДОБАВИТЬКДАТЕ(ДАТАВРЕМЯ(1, 1, 1), СЕКУНДА, ГОД(&Дата1) * 0.6)) / 6 + 1, 1) + ПОДСТРОКА("0123456789", СЕКУНДА(ДОБАВИТЬКДАТЕ(ДАТАВРЕМЯ(1, 1, 1), СЕКУНДА, ГОД(&Дата1) * 6)) / 6 + 1, 1) КАК ДатаСтрокой1,
ПОДСТРОКА("0123456789", ДЕНЬ(&Дата2) / 10 + 1, 1) + ПОДСТРОКА("0123456789", СЕКУНДА(ДОБАВИТЬКДАТЕ(ДАТАВРЕМЯ(1, 1, 1), СЕКУНДА, 6 * ДЕНЬ(&Дата2))) / 6 + 1, 1) + "/" + ПОДСТРОКА("0123456789", МЕСЯЦ(&Дата2) / 10 + 1, 1) + ПОДСТРОКА("0123456789", СЕКУНДА(ДОБАВИТЬКДАТЕ(ДАТАВРЕМЯ(1, 1, 1), СЕКУНДА, 6 * МЕСЯЦ(&Дата2))) / 6 + 1, 1) + "/" + ПОДСТРОКА("0123456789", ГОД(&Дата2) / 1000 + 1, 1) + ПОДСТРОКА("0123456789", СЕКУНДА(ДОБАВИТЬКДАТЕ(ДАТАВРЕМЯ(1, 1, 1), СЕКУНДА, ГОД(&Дата2) * 0.06)) / 6 + 1, 1) + ПОДСТРОКА("0123456789", СЕКУНДА(ДОБАВИТЬКДАТЕ(ДАТАВРЕМЯ(1, 1, 1), СЕКУНДА, ГОД(&Дата2) * 0.6)) / 6 + 1, 1) + ПОДСТРОКА("0123456789", СЕКУНДА(ДОБАВИТЬКДАТЕ(ДАТАВРЕМЯ(1, 1, 1), СЕКУНДА, ГОД(&Дата2) * 6)) / 6 + 1, 1) КАК ДатаСтрокой2
ПОМЕСТИТЬ ВТ_1
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
ВТ_1.ДатаСтрокой1 + ";" + ВТ_1.ДатаСтрокой2 КАК Поле1
ИЗ
ВТ_1 КАК ВТ_1
Показать
(9) так, конечно, красиво, но уже если говорить про дни, тогда дальше вопрос и про месяцы и т.д. - таким способом можем только с помощью Формат() вывести, но при этом, если вдруг значение перевалит за дни при формате ДДЧЧММсс, то пользователь об этом не узнает. Но если в данных 100% такого не получится, то так компактнее и красивее.
(9)
А вот это круто, вполне подошло, т.к. у меня разница только в часах,а нет разницы в днях, то подходит, вот уже для больших интервалов не сработает, т.к. там будет добавляться 1 день, 1 месяц и 1 год.
Спасибо!
ДОБАВИТЬКДАТЕ(ДАТАВРЕМЯ(1, 1, 1), СЕКУНДА,
А вот это круто, вполне подошло, т.к. у меня разница только в часах,а нет разницы в днях, то подходит, вот уже для больших интервалов не сработает, т.к. там будет добавляться 1 день, 1 месяц и 1 год.
Спасибо!
суть - подсчитать секунды, вычислить разность, выделить часы, минуты, секунды и сформировать дату из этих составляющих.
если еще считать разность по дате (не только время) - суть такая же, только обработать нужно дни и месяцы
если еще считать разность по дате (не только время) - суть такая же, только обработать нужно дни и месяцы
ВЫБРАТЬ
&ДатаНачало КАК ДатаНачало,
&ДатаОкончания КАК ДатаОкончания,
ДАТАВРЕМЯ(2000, 1, 1, 0, 0, 0) КАК РазностьВремени
ПОМЕСТИТЬ ВТ_ИсходныеДаты
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
ВТ_ИсходныеДаты.ДатаНачало КАК ДатаНачало,
ВТ_ИсходныеДаты.ДатаОкончания КАК ДатаОкончания,
ВТ_ИсходныеДаты.РазностьВремени КАК РазностьВремени,
ЧАС(ВТ_ИсходныеДаты.ДатаНачало) * 60 * 60 + МИНУТА(ВТ_ИсходныеДаты.ДатаНачало) * 60 + СЕКУНДА(ВТ_ИсходныеДаты.ДатаНачало) КАК ДатаНачалаВСекундах,
ЧАС(ВТ_ИсходныеДаты.ДатаОкончания) * 60 * 60 + МИНУТА(ВТ_ИсходныеДаты.ДатаОкончания) * 60 + СЕКУНДА(ВТ_ИсходныеДаты.ДатаОкончания) КАК ДатаОкончаниеВСекундах,
ЧАС(ВТ_ИсходныеДаты.ДатаОкончания) * 60 * 60 + МИНУТА(ВТ_ИсходныеДаты.ДатаОкончания) * 60 + СЕКУНДА(ВТ_ИсходныеДаты.ДатаОкончания) - (ЧАС(ВТ_ИсходныеДаты.ДатаНачало) * 60 * 60 + МИНУТА(ВТ_ИсходныеДаты.ДатаНачало) * 60 + СЕКУНДА(ВТ_ИсходныеДаты.ДатаНачало)) КАК РазностьСекунд
ПОМЕСТИТЬ ВТ_Составляющие
ИЗ
ВТ_ИсходныеДаты КАК ВТ_ИсходныеДаты
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
ВТ_Составляющие.ДатаНачало КАК ДатаНачало,
ВТ_Составляющие.ДатаОкончания КАК ДатаОкончания,
ВТ_Составляющие.РазностьВремени КАК РазностьВремени,
ВТ_Составляющие.РазностьСекунд КАК РазностьСекунд,
ВЫБОР
КОГДА ВТ_Составляющие.РазностьСекунд / 3600 >= 0
И ВТ_Составляющие.РазностьСекунд / 3600 < 1
ТОГДА 0
КОГДА ВТ_Составляющие.РазностьСекунд / 3600 >= 1
И ВТ_Составляющие.РазностьСекунд / 3600 < 2
ТОГДА 1
КОГДА ВТ_Составляющие.РазностьСекунд / 3600 >= 2
И ВТ_Составляющие.РазностьСекунд / 3600 < 3
ТОГДА 2
КОГДА ВТ_Составляющие.РазностьСекунд / 3600 >= 3
И ВТ_Составляющие.РазностьСекунд / 3600 < 4
ТОГДА 3
КОГДА ВТ_Составляющие.РазностьСекунд / 3600 >= 4
И ВТ_Составляющие.РазностьСекунд / 3600 < 5
ТОГДА 4
КОГДА ВТ_Составляющие.РазностьСекунд / 3600 >= 5
И ВТ_Составляющие.РазностьСекунд / 3600 < 6
ТОГДА 5
КОГДА ВТ_Составляющие.РазностьСекунд / 3600 >= 6
И ВТ_Составляющие.РазностьСекунд / 3600 < 7
ТОГДА 6
КОГДА ВТ_Составляющие.РазностьСекунд / 3600 >= 7
И ВТ_Составляющие.РазностьСекунд / 3600 < 8
ТОГДА 7
КОГДА ВТ_Составляющие.РазностьСекунд / 3600 >= 8
И ВТ_Составляющие.РазностьСекунд / 3600 < 9
ТОГДА 8
КОГДА ВТ_Составляющие.РазностьСекунд / 3600 >= 9
И ВТ_Составляющие.РазностьСекунд / 3600 < 10
ТОГДА 9
КОГДА ВТ_Составляющие.РазностьСекунд / 3600 >= 10
И ВТ_Составляющие.РазностьСекунд / 3600 < 11
ТОГДА 10
КОГДА ВТ_Составляющие.РазностьСекунд / 3600 >= 11
И ВТ_Составляющие.РазностьСекунд / 3600 < 12
ТОГДА 11
КОГДА ВТ_Составляющие.РазностьСекунд / 3600 >= 12
И ВТ_Составляющие.РазностьСекунд / 3600 < 13
ТОГДА 12
КОГДА ВТ_Составляющие.РазностьСекунд / 3600 >= 13
И ВТ_Составляющие.РазностьСекунд / 3600 < 14
ТОГДА 13
КОГДА ВТ_Составляющие.РазностьСекунд / 3600 >= 14
И ВТ_Составляющие.РазностьСекунд / 3600 < 15
ТОГДА 14
КОГДА ВТ_Составляющие.РазностьСекунд / 3600 >= 15
И ВТ_Составляющие.РазностьСекунд / 3600 < 16
ТОГДА 15
КОГДА ВТ_Составляющие.РазностьСекунд / 3600 >= 16
И ВТ_Составляющие.РазностьСекунд / 3600 < 17
ТОГДА 16
КОГДА ВТ_Составляющие.РазностьСекунд / 3600 >= 17
И ВТ_Составляющие.РазностьСекунд / 3600 < 18
ТОГДА 17
КОГДА ВТ_Составляющие.РазностьСекунд / 3600 >= 18
И ВТ_Составляющие.РазностьСекунд / 3600 < 19
ТОГДА 18
КОГДА ВТ_Составляющие.РазностьСекунд / 3600 >= 19
И ВТ_Составляющие.РазностьСекунд / 3600 < 20
ТОГДА 19
КОГДА ВТ_Составляющие.РазностьСекунд / 3600 >= 20
И ВТ_Составляющие.РазностьСекунд / 3600 < 21
ТОГДА 20
КОГДА ВТ_Составляющие.РазностьСекунд / 3600 >= 21
И ВТ_Составляющие.РазностьСекунд / 3600 < 22
ТОГДА 21
КОГДА ВТ_Составляющие.РазностьСекунд / 3600 >= 22
И ВТ_Составляющие.РазностьСекунд / 3600 < 23
ТОГДА 22
КОГДА ВТ_Составляющие.РазностьСекунд / 3600 >= 23
ТОГДА 23
КОНЕЦ КАК Часов
ПОМЕСТИТЬ ВТ_Часы
ИЗ
ВТ_Составляющие КАК ВТ_Составляющие
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
ВТ_Часы.ДатаНачало КАК ДатаНачало,
ВТ_Часы.ДатаОкончания КАК ДатаОкончания,
ВТ_Часы.РазностьВремени КАК РазностьВремени,
ВТ_Часы.РазностьСекунд КАК РазностьСекунд,
ВТ_Часы.Часов КАК Часов,
ВЫБОР
КОГДА (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 >= 0
И (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 < 1
ТОГДА 0
КОГДА (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 >= 1
И (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 < 2
ТОГДА 1
КОГДА (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 >= 2
И (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 < 3
ТОГДА 2
КОГДА (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 >= 3
И (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 < 4
ТОГДА 3
КОГДА (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 >= 4
И (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 < 5
ТОГДА 4
КОГДА (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 >= 5
И (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 < 6
ТОГДА 5
КОГДА (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 >= 6
И (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 < 7
ТОГДА 6
КОГДА (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 >= 7
И (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 < 8
ТОГДА 7
КОГДА (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 >= 8
И (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 < 9
ТОГДА 8
КОГДА (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 >= 9
И (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 < 10
ТОГДА 9
КОГДА (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 >= 10
И (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 < 11
ТОГДА 10
КОГДА (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 >= 11
И (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 < 12
ТОГДА 11
КОГДА (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 >= 12
И (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 < 13
ТОГДА 12
КОГДА (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 >= 13
И (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 < 14
ТОГДА 13
КОГДА (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 >= 14
И (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 < 15
ТОГДА 14
КОГДА (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 >= 15
И (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 < 16
ТОГДА 15
КОГДА (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 >= 16
И (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 < 17
ТОГДА 16
КОГДА (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 >= 17
И (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 < 18
ТОГДА 17
КОГДА (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 >= 18
И (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 < 19
ТОГДА 18
КОГДА (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 >= 19
И (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 < 20
ТОГДА 19
КОГДА (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 >= 20
И (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 < 21
ТОГДА 20
КОГДА (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 >= 21
И (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 < 22
ТОГДА 21
КОГДА (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 >= 22
И (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 < 23
ТОГДА 22
КОГДА (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 >= 23
И (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 < 24
ТОГДА 23
КОГДА (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 >= 24
И (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 < 25
ТОГДА 24
КОГДА (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 >= 25
И (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 < 26
ТОГДА 25
КОГДА (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 >= 26
И (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 < 27
ТОГДА 26
КОГДА (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 >= 27
И (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 < 28
ТОГДА 27
КОГДА (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 >= 28
И (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 < 29
ТОГДА 28
КОГДА (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 >= 29
И (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 < 30
ТОГДА 29
КОГДА (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 >= 30
И (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 < 31
ТОГДА 30
КОГДА (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 >= 31
И (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 < 32
ТОГДА 31
КОГДА (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 >= 32
И (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 < 33
ТОГДА 32
КОГДА (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 >= 33
И (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 < 34
ТОГДА 33
КОГДА (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 >= 34
И (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 < 35
ТОГДА 34
КОГДА (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 >= 35
И (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 < 36
ТОГДА 35
КОГДА (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 >= 36
И (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 < 37
ТОГДА 36
КОГДА (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 >= 37
И (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 < 38
ТОГДА 37
КОГДА (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 >= 38
И (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 < 39
ТОГДА 38
КОГДА (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 >= 39
И (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 < 40
ТОГДА 39
КОГДА (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 >= 40
И (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 < 41
ТОГДА 40
КОГДА (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 >= 41
И (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 < 42
ТОГДА 41
КОГДА (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 >= 42
И (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 < 43
ТОГДА 42
КОГДА (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 >= 43
И (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 < 44
ТОГДА 43
КОГДА (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 >= 44
И (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 < 45
ТОГДА 44
КОГДА (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 >= 45
И (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 < 46
ТОГДА 45
КОГДА (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 >= 46
И (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 < 47
ТОГДА 46
КОГДА (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 >= 47
И (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 < 48
ТОГДА 47
КОГДА (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 >= 48
И (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 < 49
ТОГДА 48
КОГДА (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 >= 49
И (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 < 50
ТОГДА 49
КОГДА (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 >= 50
И (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 < 51
ТОГДА 50
КОГДА (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 >= 51
И (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 < 52
ТОГДА 51
КОГДА (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 >= 52
И (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 < 53
ТОГДА 52
КОГДА (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 >= 53
И (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 < 54
ТОГДА 53
КОГДА (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 >= 54
И (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 < 55
ТОГДА 54
КОГДА (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 >= 55
И (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 < 56
ТОГДА 55
КОГДА (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 >= 56
И (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 < 57
ТОГДА 56
КОГДА (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 >= 57
И (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 < 58
ТОГДА 57
КОГДА (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 >= 58
И (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 < 59
ТОГДА 58
КОГДА (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 >= 59
И (ВТ_Часы.РазностьСекунд - ВТ_Часы.Часов * 3600) / 60 < 60
ТОГДА 59
КОНЕЦ КАК Минут
ПОМЕСТИТЬ ВТ_Часов_Минут
ИЗ
ВТ_Часы КАК ВТ_Часы
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
ВТ_Часов_Минут.ДатаНачало КАК ДатаНачало,
ВТ_Часов_Минут.ДатаОкончания КАК ДатаОкончания,
ВТ_Часов_Минут.РазностьВремени КАК РазностьВремени,
ВТ_Часов_Минут.РазностьСекунд КАК РазностьСекунд,
ВТ_Часов_Минут.Часов КАК Часов,
ВТ_Часов_Минут.Минут КАК Минут,
ВТ_Часов_Минут.РазностьСекунд - ВТ_Часов_Минут.Часов * 3600 - ВТ_Часов_Минут.Минут * 60 КАК Секунд
ПОМЕСТИТЬ ВТ_Часы_Минуты_Секунды
ИЗ
ВТ_Часов_Минут КАК ВТ_Часов_Минут
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
ВТ_Часы_Минуты_Секунды.ДатаНачало КАК ДатаНачало,
ВТ_Часы_Минуты_Секунды.ДатаОкончания КАК ДатаОкончания,
ДОБАВИТЬКДАТЕ(ДОБАВИТЬКДАТЕ(ДОБАВИТЬКДАТЕ(ВТ_Часы_Минуты_Секунды.РазностьВремени, ЧАС, ВТ_Часы_Минуты_Секунды.Часов), МИНУТА, ВТ_Часы_Минуты_Секунды.Минут), СЕКУНДА, ВТ_Часы_Минуты_Секунды.Секунд) КАК РазностьВремени
ИЗ
ВТ_Часы_Минуты_Секунды КАК ВТ_Часы_Минуты_Секунды
ПоказатьПрикрепленные файлы:
(6) ого, вот это да, ну очень громоздко. Не стал пробовать это прикрутить к моему запросу, т.к. нашел более простой способ выше.
А вообще такая штука проканает, если даты задаются не параметрами, как у Вас, а выбираются из результатов запроса, т.е. у меня их много и все разные.
А вообще такая штука проканает, если даты задаются не параметрами, как у Вас, а выбираются из результатов запроса, т.е. у меня их много и все разные.
Боюсь показаться бестактным, но, используйте СКД, все тоже самое только в 10раз проще.... и форматы и перобразования и использование функций конфигурации
в СКД так делал:
а в вычисляемых полях уже
(ВЫРАЗИТЬ(ВЫБОР
КОГДА ИсторияПриемкиКоробов.ДатаОкончания = ДАТАВРЕМЯ(1, 1, 1)
ИЛИ ИсторияПриемкиКоробов.ДатаНачала = ДАТАВРЕМЯ(1, 1, 1)
ТОГДА 0
ИНАЧЕ РАЗНОСТЬДАТ(ИсторияПриемкиКоробов.ДатаНачала, ИсторияПриемкиКоробов.ДатаОкончания, СЕКУНДА)
КОНЕЦ / 3600 КАК ЧИСЛО(10, 0))) - ВЫБОР
КОГДА МИНУТА(ДОБАВИТЬКДАТЕ(ДАТАВРЕМЯ(1, 1, 1), СЕКУНДА, ВЫБОР
КОГДА ИсторияПриемкиКоробов.ДатаОкончания = ДАТАВРЕМЯ(1, 1, 1)
ИЛИ ИсторияПриемкиКоробов.ДатаНачала = ДАТАВРЕМЯ(1, 1, 1)
ТОГДА 0
ИНАЧЕ РАЗНОСТЬДАТ(ИсторияПриемкиКоробов.ДатаНачала, ИсторияПриемкиКоробов.ДатаОкончания, СЕКУНДА)
КОНЕЦ)) >= 30
ТОГДА 1
ИНАЧЕ 0
КОНЕЦ КАК Часов,
ВЫРАЗИТЬ((ВЫБОР
КОГДА ИсторияПриемкиКоробов.ДатаОкончания = ДАТАВРЕМЯ(1, 1, 1)
ИЛИ ИсторияПриемкиКоробов.ДатаНачала = ДАТАВРЕМЯ(1, 1, 1)
ТОГДА 0
ИНАЧЕ РАЗНОСТЬДАТ(ИсторияПриемкиКоробов.ДатаНачала, ИсторияПриемкиКоробов.ДатаОкончания, СЕКУНДА)
КОНЕЦ - ((ВЫРАЗИТЬ(ВЫБОР
КОГДА ИсторияПриемкиКоробов.ДатаОкончания = ДАТАВРЕМЯ(1, 1, 1)
ИЛИ ИсторияПриемкиКоробов.ДатаНачала = ДАТАВРЕМЯ(1, 1, 1)
ТОГДА 0
ИНАЧЕ РАЗНОСТЬДАТ(ИсторияПриемкиКоробов.ДатаНачала, ИсторияПриемкиКоробов.ДатаОкончания, СЕКУНДА)
КОНЕЦ / 3600 КАК ЧИСЛО(10, 0))) - ВЫБОР
КОГДА МИНУТА(ДОБАВИТЬКДАТЕ(ДАТАВРЕМЯ(1, 1, 1), СЕКУНДА, ВЫБОР
КОГДА ИсторияПриемкиКоробов.ДатаОкончания = ДАТАВРЕМЯ(1, 1, 1)
ИЛИ ИсторияПриемкиКоробов.ДатаНачала = ДАТАВРЕМЯ(1, 1, 1)
ТОГДА 0
ИНАЧЕ РАЗНОСТЬДАТ(ИсторияПриемкиКоробов.ДатаНачала, ИсторияПриемкиКоробов.ДатаОкончания, СЕКУНДА)
КОНЕЦ)) >= 30
ТОГДА 1
ИНАЧЕ 0
КОНЕЦ) * 3600) / 60 КАК ЧИСЛО(3, 0)) КАК Минут
Показатьа в вычисляемых полях уже
Строка(Часов) + " ч " + Строка(Минут) + " мин"
Непосредственно в запросе многие задачи представления данных красиво не решаются. Не для того оно.
Пост-обработкой легко. Красиво многие задачи пост-обработки в СКД реализованы.
Пост-обработкой легко. Красиво многие задачи пост-обработки в СКД реализованы.
(15) Переходи на СКД :) Я УФ чисто из-за красивой и легкой отчетности на них начал использовать в затертые года. Включил в толстом клиенте использование УФ и всю новую отчетность ваял уже на УФ+СКД. Тем легче было потом переносить функциональность.
Внимание! Тема сдана в архив
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот