Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / подсчет минут / 18 сообщений из 18, страница 1 из 1
18.10.2017, 10:02
    #39537857
vlad2018
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
подсчет минут
Коллеги, доброе утро. Возникла задача по подсчету минут, а именно:
Есть две даты со временем 25.07.2017 14:15:01 и 28.07.2017 10:20:37 необходимо подсчитать количество прошедших минут т.е. подсчет необходим с 9-00 и до 18-00 результат получается 1265,00 минут
Я сделал запрос, но он у меня считатет количество минут общее и я получаю 4086 минут, а не 1265 минут

select floor((((to_date('25.07.2017 14:15:01','dd.mm.yyyy hh24.mi.ss')-to_date('28.07.2017 10:20:37','dd.mm.yyyy hh24.mi.ss'))*24*60*60)/3600)*60) ||'mm' from dual

Подскажите может кто знает, каким образом можно сделать ограничение по подсчету
...
Рейтинг: 0 / 0
18.10.2017, 10:08
    #39537861
Загги
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
подсчет минут
vlad2018,
вычесть из результата периоды с 18-00 до 9-00 вошедшие в ваш временной промежуток
...
Рейтинг: 0 / 0
18.10.2017, 10:14
    #39537864
vlad2018
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
подсчет минут
Загги,
Может у Вас есть пример универсальной формулы для вычитания из результата периоды с 18-00 до 9-00 вошедших во временной промежуток?
...
Рейтинг: 0 / 0
18.10.2017, 10:39
    #39537890
Alibek B
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
подсчет минут
Число_полных_дней*9+Начало+Остаток
...
Рейтинг: 0 / 0
18.10.2017, 10:41
    #39537891
Загги
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
подсчет минут
vlad2018,
есть:

1) 9 часов (обед в вашем условии не учитывается) умножаем на количество уникальных дат нашего периода

2) если время старта между 0-00 и 9-00, то добавляем разницу между 9-00 и временем старта
3) если время старта между 9-00 и 18-00, то вычитаем разницу между временем старта и 9-00
4) если время старта между 18-00 и 0-00, то вычитаем 9 часов

5) если время финиша между 0-00 и 9-00, то вычитаем 9 часов
6) если время финиша между 9-00 и 18-00, то вычитаем разницу между 18-00 и временем финиша
7) если время финиша между 18-00 и 0-00, то прибавляем разницу между временем финиша и 18-00
...
Рейтинг: 0 / 0
18.10.2017, 10:53
    #39537894
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
подсчет минут
vlad2018,

обед а разность почему включаете?

.....
stax
...
Рейтинг: 0 / 0
18.10.2017, 10:54
    #39537897
vlad2018
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
подсчет минут
Stax,
Что вы имеете ввиду?
...
Рейтинг: 0 / 0
18.10.2017, 11:10
    #39537906
Загги
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
подсчет минут
Staxа разность почему включаете?
все разночтения трактую в пользу сотрудника
...
Рейтинг: 0 / 0
18.10.2017, 11:13
    #39537911
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
подсчет минут
vlad2018Stax,
Что вы имеете ввиду?

с 9 по 18 обычно есть обеденный перерыв, и обычно его не включают во время

зы
нюасов много, напр в с-по вошел выходной, "корткий" день и тд

.....
stax
...
Рейтинг: 0 / 0
18.10.2017, 11:38
    #39537933
vlad2018
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
подсчет минут
Stax,

это да, но мне необходимо ежедневный подсчет не учитывая обеда и коротких рабочих дней
...
Рейтинг: 0 / 0
18.10.2017, 11:51
    #39537943
Vadim Lejnin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
подсчет минут
vlad2018Stax,

это да, но мне необходимо ежедневный подсчёт не учитывая обеда и коротких рабочих дней
А выходные - праздники?

По хорошему, это решается только справочником - календарём рабочего времени
...
Рейтинг: 0 / 0
18.10.2017, 11:58
    #39537950
vlad2018
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
подсчет минут
Vadim Lejnin,
выходные я не включаю в расчет, только будни
Елсли можно пример кода.. как реализовать это
...
Рейтинг: 0 / 0
18.10.2017, 12:02
    #39537954
MaximaXXL
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
подсчет минут
vlad2018,

Вам Загги 20878095 дал полный, как мне кажется, ответ.

Подход в лоб будет как-то так

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
select case StartDateTime-StartDate0900 when ... then ...
                                        when ... then ...
                                        else ... end 
(+ or -)
(EndDate0000-StartDate0000)*540/*минут в 9 часах*/
(+ or -)
case EndDateTime-EndDate1800 when ... then ...
                             when ... then ...
                             else ... end 
from dual
...
Рейтинг: 0 / 0
18.10.2017, 12:04
    #39537957
Да ну
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
подсчет минут
vlad2018Подскажите может кто знает, каким образом можно сделать ограничение по подсчету
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
with q as (
  select
    to_date('25.07.2017 14:15:01', 'DD.MM.YYYY HH24:MI:SS') d1,
    to_date('28.07.2017 10:20:37', 'DD.MM.YYYY HH24:MI:SS') d2,
    9  h1,
    18 h2
  from dual
)
select
(
  case
    when d1 <= trunc(d1) + h1 / 24 then (h2 - h1) / 24
    when d1 >= trunc(d1) + h2 / 24 then 0
    else (trunc(d1) + h2 / 24) - d1
  end
  +
  case
    when d2 <= trunc(d2) + h1 / 24 then 0
    when d2 >= trunc(d2) + h2 / 24 then (h2 - h1) / 24
    else d2 - (trunc(d2) + h1 / 24)
  end
  +
  greatest(trunc(d2) - trunc(d1) - 1, 0) * (h2 - h1) / 24
) * 24 * 60 minutes
from q
;

MINUTES
----------
   1385.6
...
Рейтинг: 0 / 0
18.10.2017, 12:08
    #39537961
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
подсчет минут
vlad2018,

c помощью case описываете пункты Загги (с учетом Вашей спицифики)

может и можно извратится и одной формулой (greatest/least тощо),
но она будет громадной и мало читабельной

для упрощения можно размножить записи по днях,
напр 25.07.2017 14:15:01 по 28.07.2017 10:20:37 - 4 строки и их посчитать (просуммировать)

зы
на форуме 100% обсуждали


.....
stax
...
Рейтинг: 0 / 0
18.10.2017, 12:19
    #39537969
Да ну
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
подсчет минут
Да ну,

Для одной даты начала и конца ошибся:
Код: plsql
1.
2.
3.
4.
...............
  +
  (trunc(d2) - trunc(d1) - 1) * (h2 - h1) / 24
) * 24 * 60 minutes
...
Рейтинг: 0 / 0
18.10.2017, 12:24
    #39537972
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
подсчет минут
vlad2018,

нашел похожее
И вновь временные интервалы

....
stax
...
Рейтинг: 0 / 0
18.10.2017, 12:56
    #39537995
vlad2018
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
подсчет минут
Спасибо всем за помощь, все получилось)
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / подсчет минут / 18 сообщений из 18, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]