|
пересечение трёх временных интервалов...?
|
|||
---|---|---|---|
#18+
привет всем. не пойму как решить такую задачку.... первый временной интервал - это рабочее время. С '08:00:00'::time до '17:00:00'::time каждый день. (без выходных и обедов) второй интервал - это просто один длинный интервал. например от '2012-06-12 02:56:21.479967+04' до '2012-06-14 15:36:50.469214+04' третий - это таблица Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
задача sql запросом получить примерно такую таблицу пересечений этих интервалов: 2012-06-12 08:00:00.0+04 2012-06-12 15:30:24.104155+042012-06-12 16:30:33.611383+04 2012-06-12 18:33:54.97977+042012-06-14 11:15:13.211176+04 2012-06-14 15:36:50.469214+04 хелп! ... |
|||
:
Нравится:
Не нравится:
|
|||
15.06.2012, 12:40 |
|
пересечение трёх временных интервалов...?
|
|||
---|---|---|---|
#18+
блин, всю голову уже сломал.... упрощу задачу.... есть 2 временных интервала первый тот-же, с 8-ми утра до 5-ти вечера каждый день (рабочее время) а второй интервал - задан датой начала и датой конца. нужно посчитать количество рабочего времени вошедшего во второй интервал. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.06.2012, 13:41 |
|
пересечение трёх временных интервалов...?
|
|||
---|---|---|---|
#18+
kkv79, У вас тут не интервалы(interval), но диапазоны (range), не надо путать, interval - это просто время какой-то продолжительности, не привязанное к чему-либо. В 9.2 диапазоны работают из коробки. У вас, видимо, не 9.2, стало быть, из коробки не работает. Вы, как я понимаю, хотите найти пересечение двух диапазонов. Пусть (lo1,hi1) - первый диапазон, а (lo2,hi2) - второй. Соответственно, искомое пересечение будет lo3=greatest(lo1,lo2), hi3=least(hi1,hi2) Если lo3>hi3, диапазоны не пересекаются. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.06.2012, 18:27 |
|
пересечение трёх временных интервалов...?
|
|||
---|---|---|---|
#18+
у меня первый "интервал" задан временем без даты а второй timestamp with time zone проблема в том, что второй интервал может длиться несколько суток, может начаться например в 13.00 сегодня а завершиться в 11.00 после завтра. т.е. (с 13.00 до 17.00 = 4 часа сегодня) + (весь рабочий день завтра = 9 часов) + (с 8.00 до 11.00 = 3 часа после завтра) = (16 часов всего) как в таком случае считать? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2012, 11:51 |
|
пересечение трёх временных интервалов...?
|
|||
---|---|---|---|
#18+
kkv79как в таком случае считать? Да, действительно, как же в таком случае считать? Потрудитесь маленько, подумайте, это дело богоугодное, если чо, а уж если не получается - то вы, скорее всего, занимаетесь чем-то не тем. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2012, 13:53 |
|
пересечение трёх временных интервалов...?
|
|||
---|---|---|---|
#18+
вопрос закрыт. запросом сделать не удалось, сделал в процедуре.... ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2012, 23:29 |
|
пересечение трёх временных интервалов...?
|
|||
---|---|---|---|
#18+
Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
... |
|||
:
Нравится:
Не нравится:
|
|||
18.06.2012, 13:10 |
|
|
start [/forum/topic.php?fid=53&gotonew=1&tid=2000239]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
33ms |
get topic data: |
11ms |
get first new msg: |
6ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
others: | 255ms |
total: | 383ms |
0 / 0 |