|
автор: Andrew (02.10.2006 в 16:00) |
|
| Проблем собственно две : 1 есть отчет. в отчете два столбца: машина и время машины в работе
зил1 5:10
зил2 6:00
ваз2 8:20
ваз2 14:00
итого - и вот тут отчет выводит всякий бред нипонятно как сложенный а должна (по этому примеру) 33:30
как заставить отчет выводить такое время - у меня никак неполучается
2 -я проблема : есть время включения бензинового генератора время выключения (норматив расхода топлива по времени работы) т.е расход=конец-начало* норматив например (17:30 -8:00) *5 =47.5
и вот тут я немогу правильно состыковать время а не 9.5 с этой нормой т.е. немогу правильно преобразовать тип данных - т.е. у меня конец-начало=0.395833333333333
может кто знает выход из этих проблем | |
|
| |
|
|
|
| datediff если мне не изменяют | |
|
| |
|
автор: Аноним (03.10.2006 в 09:20) |
|
| к сожалению с этим дайтедиффом не очень удобно работать - я там не сумел проссумировать правильно время >24 часов | |
|
| |
|
|
|
| с дэйтадифом работать достаточно удобно - он и придуман для того, чтобы оптимизировать работу со временны'ми интервалами...
в твоем случае - можешь привести интервалы к единице измерения меньшей степени дискретизации периода - к минутам, просуммировать периоды выраженные в этих единицах, привести к сумме выраженной в обычной нотации часы : минуты
REM>>
в сутках 24 часа
в часе 60 минут
в минуте 60 секунд
если в твоем примере интервал указан как мм:сс то сумма будет равна 310+360+500+840 = хххх секунд
приведи это обратно в минуты и секунды и получишь время работы оборудования | |
|
| |
|
|
|
| что значит неудобно?!
считайте в минутах.
в MS SQL вот так делал. тоже самое можно в Access только вместо Case-When использовать IIF
Определить пассажиров, которые больше других времени провели в полете.
Вывод: имя пассажира, время полета в минутах.
select p2.name,x.ss
from (select p.id_psg,
sum((case when t.time_out>t.time_in
then 1440-(abs(datediff(mi,t.time_out,t.time_in)))
else datediff(mi,t.time_out,t.time_in)
end)) ss
from trip t, pass_in_trip pt, passenger p
where t.trip_no=pt.trip_no and pt.id_psg=p.id_psg
group by p.id_psg
) x, passenger p2
where x.ss=(select max(y.ss) from (
select p.id_psg,
sum((case when t.time_out>t.time_in
then 1440-(abs(datediff(mi,t.time_out,t.time_in)))
else datediff(mi,t.time_out,t.time_in)
end)) ss
from trip t, pass_in_trip pt, passenger p
where t.trip_no=pt.trip_no
and pt.id_psg=p.id_psg
group by p.id_psg
) y)
and p2.id_psg=x.id_psg | |
|
| |
|
|
|
| >что значит неудобно?!
SELECT Sum(DateDiff("n",0,[YourFieldName])) AS MinutesInTotal FROM YourTableName; | |
|
| |
|
автор: Andrew (03.10.2006 в 10:03) |
|
| Сорри . разобрался - оказывается датедифф - удобен - просто немного хелп надо читать внимательней и переменные обнулять вовремя - извиняюсь исчто раз | |
|
| |
|