powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / подсчет минут
18 сообщений из 18, страница 1 из 1
подсчет минут
    #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
подсчет минут
    #39537861
Загги
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vlad2018,
вычесть из результата периоды с 18-00 до 9-00 вошедшие в ваш временной промежуток
...
Рейтинг: 0 / 0
подсчет минут
    #39537864
vlad2018
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Загги,
Может у Вас есть пример универсальной формулы для вычитания из результата периоды с 18-00 до 9-00 вошедших во временной промежуток?
...
Рейтинг: 0 / 0
подсчет минут
    #39537890
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Число_полных_дней*9+Начало+Остаток
...
Рейтинг: 0 / 0
подсчет минут
    #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
подсчет минут
    #39537894
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vlad2018,

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

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

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

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

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

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

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

По хорошему, это решается только справочником - календарём рабочего времени
...
Рейтинг: 0 / 0
подсчет минут
    #39537950
vlad2018
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Vadim Lejnin,
выходные я не включаю в расчет, только будни
Елсли можно пример кода.. как реализовать это
...
Рейтинг: 0 / 0
подсчет минут
    #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
подсчет минут
    #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
подсчет минут
    #39537961
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vlad2018,

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

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

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

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


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

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

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

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


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