Вопрос № 51414: Здравствуйте все еще раз!!!
В дополнение к вопросу №51367:
В БД Акцесс имеется поле Дата/Время в формате hh:mm
Вопрос: Как мне просуммировать это поле SQL-запросом, чтобы результат остался в формате hh:mm, причем чтобы он был более 2...
Вопрос № 51.414
Здравствуйте все еще раз!!!
В дополнение к вопросу №51367:
В БД Акцесс имеется поле Дата/Время в формате hh:mm
Вопрос: Как мне просуммировать это поле SQL-запросом, чтобы результат остался в формате hh:mm, причем чтобы он был более 24 часов, или как считать в переменную каждое значение из этого поля, и конвертировать его согласно формуле: t:=hh+(mm/60), t:real;
Отвечает: Филатов Евгений Геннадьевич
Здравствуйте, Герасименко Алексей Анатольевич/Geer!
В таблице Tab1 имеется поле Tim формата Дата/время - краткий формат времени ( 17:34 ).
Заполняем поле значениями и выполняем запрос:
select ( sum ( hour ( tim ) ) + int ( sum ( minute ( tim ) ) / 60 ) ) as chasov , ( sum ( minute ( tim ) ) - int ( sum ( minute ( tim ) ) / 60 ) * 60 ) as minut from tab1
В результате выведутся два поля, в которых будет общее количество часов ( в т.ч. и с учетом сумм минут / 60 ) и минут ( от 0 до 59 ) .
Формат hh:mm данный ответ не поддерживает ( выбросит ошибку ).
Можно изменить запрос:
select ( trim ( str ( sum ( hour ( tim ) ) + int ( sum ( minute ( tim ) ) / 60 ) ) ) ) + ':' + trim ( str ( sum ( minute ( tim ) ) - int ( sum ( minute ( tim ) ) / 60 ) * 60 ) ) as vrem from tab1
Можно минуты выразить дробью, но мне кажется в виде 142:32 красивее и нагляднее.
Можно изменить запрос:
select ( trim ( str ( sum ( hour ( tim ) ) + int ( sum ( minute ( tim ) ) / 60 ) ) ) ) + 'час' + trim ( str ( sum ( minute ( tim ) ) - int ( sum ( minute ( tim ) ) / 60 ) * 60 ) + 'мин' ) as vrem from tab1
Тогда ответ будет в виде 142час32мин.
С уважением.
Ответ отправил: Филатов Евгений Геннадьевич (статус: 4-ый класс)
Ответ отправлен: 07.08.2006, 16:57 Оценка за ответ: 5
Отвечает: Александр Шевченко
Здравствуйте, Герасименко Алексей Анатольевич/Geer!
1. select rtrim(convert(char, (sum(datepart(hour,dat))+ sum(datepart(minute, dat))/60))) + ':' + rtrim(convert(char, (sum(datepart(minute, dat)) - (sum(datepart(minute, dat))/60) * 60))) as hours from dates
2. select datepart(hour,dat)+datepart(minute, dat)/60.0 as hours from dates
--------- Вместо внутренней почты лучше стучитесь в аську
Ответ отправил: Александр Шевченко (статус: Студент)
Ответ отправлен: 08.08.2006, 11:57