|
|
|
Дни отпуска
|
|||
|---|---|---|---|
|
#18+
Norman94stax..пропущено... а надо to_char(greatest(trunc (to_date(god,'yyyy')+(to_number(ltrim(weeks,'N'))-1)*7,' dd mon '),to_date(god, 'yyyy')),'dd mon') Begin_Week, ......... stax Да да, я так сделал, но теперь всё сломалось, функция как и раньше снова считает по первым дням, а не заглядывает в последние дни, как до greatest. Вообще не понимаю в чём дело.[/quot] оракляча фіча to_date(god, 'yyyy') счас ето май ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2017, 14:18 |
|
||
|
Дни отпуска
|
|||
|---|---|---|---|
|
#18+
Ваш вариант я использовал в другом месте. Я уже писал, что в функции которая ищет отпуска по интервалам надо сделать - начало - 1 число недели, конец - воскресенье последней недели отпуска. В этом посту 20460027 юзер привёл отличный пример, но к его подсчётам у меня не получается прикрутить greatest. Точнее, прикрутить получилось, но всё задание слито на корню. А до greatest всё работало как надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2017, 14:18 |
|
||
|
Дни отпуска
|
|||
|---|---|---|---|
|
#18+
Я даже не могу понять, в чём дело. Без greatest всё работало как надо, а с ней - он выдаёт чёрти что. Он даже недели не правильно выводит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2017, 14:45 |
|
||
|
Дни отпуска
|
|||
|---|---|---|---|
|
#18+
Norman94Ваш вариант я использовал в другом месте. Я уже писал, что в функции которая ищет отпуска по интервалам надо сделать - начало - 1 число недели, конец - воскресенье последней недели отпуска. В этом посту 20460027 юзер привёл отличный пример, но к его подсчётам у меня не получается прикрутить greatest. Точнее, прикрутить получилось, но всё задание слито на корню. А до greatest всё работало как надо. запутался я если неделя начинается в понедельник то воскресенье +6 Код: plsql 1. 2. 3. 4. 5. 6. если я Вас понимаю, то greatest нужен для первой недели января ...... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2017, 14:46 |
|
||
|
Дни отпуска
|
|||
|---|---|---|---|
|
#18+
stax..Norman94Ваш вариант я использовал в другом месте. Я уже писал, что в функции которая ищет отпуска по интервалам надо сделать - начало - 1 число недели, конец - воскресенье последней недели отпуска. В этом посту 20460027 юзер привёл отличный пример, но к его подсчётам у меня не получается прикрутить greatest. Точнее, прикрутить получилось, но всё задание слито на корню. А до greatest всё работало как надо. запутался я если неделя начинается в понедельник то воскресенье +6 Код: plsql 1. 2. 3. 4. 5. 6. если я Вас понимаю, то greatest нужен для первой недели января ...... stax Не только для первого января, но и чтобы он года различал. Для 2017 он всё выводит как надо. Например я поставил О для 3 недель в 2017 и 2016. В 2017 всё правильно - с 8 мая до 4 июня. Для 2016 вообще треш - 7 мая по 3 июня. Это не правильно. Пожалуйста, скажите, как грамотно применить greatest для этих строк Код: sql 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2017, 14:50 |
|
||
|
Дни отпуска
|
|||
|---|---|---|---|
|
#18+
Norman94stax..пропущено... запутался я если неделя начинается в понедельник то воскресенье +6 Код: plsql 1. 2. 3. 4. 5. 6. если я Вас понимаю, то greatest нужен для первой недели января ...... stax Не только для первого января, но и чтобы он года различал. Для 2017 он всё выводит как надо. Например я поставил О для 3 недель в 2017 и 2016. В 2017 всё правильно - с 8 мая до 4 июня. Для 2016 вообще треш - 7 мая по 3 июня. Это не правильно. Пожалуйста, скажите, как грамотно применить greatest для этих строк Код: sql 1. 2. почти Ваша тема Определить дату по номеру недели если первая неделя - неделя с первым четвергом года если для 2016 года выводится неправильно, надо найти причину, я не могу понять зачем Вам greatest для конца інтервала авторДля 2016 вообще треш - 7 мая по 3 июня. Это не правильно. ето для какой недели? и как правильно? ...... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2017, 15:06 |
|
||
|
Дни отпуска
|
|||
|---|---|---|---|
|
#18+
stax..Norman94пропущено... Не только для первого января, но и чтобы он года различал. Для 2017 он всё выводит как надо. Например я поставил О для 3 недель в 2017 и 2016. В 2017 всё правильно - с 8 мая до 4 июня. Для 2016 вообще треш - 7 мая по 3 июня. Это не правильно. Пожалуйста, скажите, как грамотно применить greatest для этих строк Код: sql 1. 2. почти Ваша тема Определить дату по номеру недели если первая неделя - неделя с первым четвергом года если для 2016 года выводится неправильно, надо найти причину, я не могу понять зачем Вам greatest для конца інтервала авторДля 2016 вообще треш - 7 мая по 3 июня. Это не правильно. ето для какой недели? и как правильно? ...... stax Ну когда я ставлю greatest, он мало того, что считает с 1 января, так ещё и даты других годов учитывает. Это с 19-22 неделю. И правильнее будет не 7 мая по 3 июня А со 2 по 29 мая ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2017, 15:10 |
|
||
|
Дни отпуска
|
|||
|---|---|---|---|
|
#18+
Как мне нужно изменить те строчки, чтобы выводилось как надо? Или что надо поменять в функции вообще? Код: sql 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. 31. 32. 33. 34. 35. 36. 37. 38. 39. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2017, 15:11 |
|
||
|
Дни отпуска
|
|||
|---|---|---|---|
|
#18+
Norman94, Мне кажется Вы всех запутали и себя в первую очередь вот это я Вам предложил когда вы сказали что во ВСЕХ годах первая неделя это 01.01-07.01 Код: plsql 1. Сейчас вы пишите что неделя ДОЛЖНА зависеть от года: то есть ПЕРВАЯ неделя 2017 это 01.01-01.01 - т.к. первая неделя года была воскресенье только. Определитесь на листочке ЧТО вы хотите видеть и изложите с листочка проблему, а не фразами 18 неделя не правильно определилась, тут мало кто будет 18 высчитывать. Для первой - второй определитесь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2017, 15:36 |
|
||
|
Дни отпуска
|
|||
|---|---|---|---|
|
#18+
Norman94Ну когда я ставлю greatest, он мало того, что считает с 1 января, так ещё и даты других годов учитывает. Это с 19-22 неделю. И правильнее будет не 7 мая по 3 июня А со 2 по 29 мая Ваша ф-ция считает начало первой недели 01 января вторая неделя начинается с 08 января (не с понедельника) to_char(trunc(to_date(god,'yyyy'),'y')+(to_number(ltrim(weeks,'N'))-1)*7 +1 ,'dd mon') Begin_Week, to_char(trunc(to_date(god,'yyyy'),'y')+(to_number(ltrim(weeks,'N'))-1)*7 +7 ,'dd mon') End_week 1) зачем плюс 1 я не знаю 2) +7 ето начало след недели, а не конец greatest сдесь нипричем, ф-ция (выражение) по другому считает недели сравните с trunc (to_date(god||'0101', 'yyyymmdd')+(weeks-1)*7, 'iw') ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2017, 15:42 |
|
||
|
Дни отпуска
|
|||
|---|---|---|---|
|
#18+
MaximaXXL, Да, во всех годах первая неделя (и да, в 2017 это 1 неделя - это 1 января, так правильно), но при этом надо, чтобы он недели показывал в соответствии с их положение в году! То есть как я уже написал выше я ставлю О (то есть отпуск) в 18-21 неделе. В 2017 году - он должен вывести (и выводит!) 8 мая - 4 июн. Это правильно. Однако теперь я в таблице ставлю О для 2016 года, именно на тех неделях. И он должен вывести не с 7 по 3 июня, а 2 по 29 мая. Для 2015 это уже будут другие числа. Я так пытался сделать с помщью greatest, но.. Не выходит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2017, 15:43 |
|
||
|
Дни отпуска
|
|||
|---|---|---|---|
|
#18+
stax..1) зачем плюс 1 я не знаю 2) +7 ето начало след недели, а не конец ..... stax Когда их не было, он считал 1 числа недели не за понедельник, а за воскресенье. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2017, 15:45 |
|
||
|
Дни отпуска
|
|||
|---|---|---|---|
|
#18+
stax.. 1) зачем плюс 1 я не знаю 2) +7 ето начало след недели, а не конец ..... stax звиняюсь запутался я, надо +1 и соответственно +1+6=7 ps также не понимаю зачем Вам столько ф-ций, одной ж достаточно, добавив парамер "тип отпуска" (о,у,к ...) ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2017, 15:48 |
|
||
|
Дни отпуска
|
|||
|---|---|---|---|
|
#18+
stax..ps также не понимаю зачем Вам столько ф-ций, одной ж достаточно, добавив парамер "тип отпуска" (о,у,к ...) ..... stax Ну я так и сделаю) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2017, 15:49 |
|
||
|
Дни отпуска
|
|||
|---|---|---|---|
|
#18+
Norman94stax..1) зачем плюс 1 я не знаю 2) +7 ето начало след недели, а не конец ..... stax Когда их не было, он считал 1 числа недели не за понедельник, а за воскресенье. не так, Вам просто повезло что 2017 начинался в воскресенье ...... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2017, 15:51 |
|
||
|
Дни отпуска
|
|||
|---|---|---|---|
|
#18+
MaximaXXLNorman94, Мне кажется Вы всех запутали и себя в первую очередь вот это я Вам предложил когда вы сказали что во ВСЕХ годах первая неделя это 01.01-07.01 Код: plsql 1. Сейчас вы пишите что неделя ДОЛЖНА зависеть от года: то есть ПЕРВАЯ неделя 2017 это 01.01-01.01 - т.к. первая неделя года была воскресенье только. Определитесь на листочке ЧТО вы хотите видеть и изложите с листочка проблему, а не фразами 18 неделя не правильно определилась, тут мало кто будет 18 высчитывать. Для первой - второй определитесь. Извините, я опять запутал. Вот как надо. В любом году 1 неделя начинается с 1 января. В 2017 году - 1 неделя - это 1 января, вторая 2-8 и т.д. В 2016 1 неделя - 1 января - 3 января и т.д. При этом положение недель (то есть первые числа недели) должны быть в соответствии с оным в году. Как я уже написал выше с маем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2017, 15:53 |
|
||
|
Дни отпуска
|
|||
|---|---|---|---|
|
#18+
stax.., Да, поэтому я пытаюсь привязать greatest, но не выходит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2017, 15:54 |
|
||
|
Дни отпуска
|
|||
|---|---|---|---|
|
#18+
Norman94, Код: plsql 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2017, 16:04 |
|
||
|
Дни отпуска
|
|||
|---|---|---|---|
|
#18+
Norman94stax.., Да, поэтому я пытаюсь привязать greatest, но не выходит. 20460313 еще раз greatest нужен для "первой" недели, шоб получіть первое января для того чтоб неделя начиналась с понедельника надо trunc(xxx,'iw') ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2017, 16:04 |
|
||
|
Дни отпуска
|
|||
|---|---|---|---|
|
#18+
Norman94stax..1) зачем плюс 1 я не знаю 2) +7 ето начало след недели, а не конец ..... stax Когда их не было, он считал 1 числа недели не за понедельник, а за воскресенье. Какой день недели считать первым зависит от параметра NLS_TERRITORY ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2017, 16:05 |
|
||
|
Дни отпуска
|
|||
|---|---|---|---|
|
#18+
123ййNorman94, Код: plsql 1. 2. 3. 4. 5. 6. Хорошо, намёк я понял, а как мне в эти строки всё подстроить? Код: sql 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2017, 16:06 |
|
||
|
Дни отпуска
|
|||
|---|---|---|---|
|
#18+
stax..Norman94stax.., Да, поэтому я пытаюсь привязать greatest, но не выходит. 20460313 еще раз greatest нужен для "первой" недели, шоб получіть первое января для того чтоб неделя начиналась с понедельника надо trunc(xxx,'iw') ..... stax Но даже если не обращать внимания на greatest, как мне заставить эти строчки считать числа интервалов в зависимости от года? как? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2017, 16:07 |
|
||
|
Дни отпуска
|
|||
|---|---|---|---|
|
#18+
MaximaXXLNorman94пропущено... Когда их не было, он считал 1 числа недели не за понедельник, а за воскресенье. Какой день недели считать первым зависит от параметра NLS_TERRITORY Это как то можно сюда вставить? Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2017, 16:08 |
|
||
|
Дни отпуска
|
|||
|---|---|---|---|
|
#18+
Вот пример из другой функции. Здесь считает и о 1 января, и недели у него начинаются как должны начинаться в определённом году Код: sql 1. 2. 3. 4. 5. 6. Как мне здесь подобное изобразить? Код: sql 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2017, 16:11 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=39449482&tid=1885927]: |
0ms |
get settings: |
10ms |
get forum list: |
18ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
92ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
89ms |
get tp. blocked users: |
2ms |
| others: | 253ms |
| total: | 489ms |

| 0 / 0 |
