powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Преобразование чисел в дату
15 сообщений из 15, страница 1 из 1
Преобразование чисел в дату
    #39416586
Norman94
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день. Имеется длинная функция. Она стыкует между собой 52 столбца (N какое то число), что подразумевает собой количество недель в году. На выходе получается, что он выводит мне определённые столбцы, но лишь числа (n я убрал). Теперь как сделать так, чтобы 1 неделя у меня превратилась в 01.01, 2 неделя в 08.01 и так далее, то есть чтобы выводился день новой недели и месяц. У меня сейчас получилось сделать чтобы выводился день( то есть первая неделя - 1, вторая неделя - 8 и т.д.), но последняя неделя вообще получается 36.. Подскажите как это лучше сделать?

create or replace FUNCTION get_week_list(i_code IN INTEGER, i_year in integer) RETURN VARCHAR2 IS
l_list VARCHAR2(32767);
l_res VARCHAR2(4000);
BEGIN
SELECT listagg('CASE WHEN '||column_name||' IN(''у'',''о'') THEN '||((LTRIM(column_name,'N')*7)-6)||'||'','' ELSE NULL END ' ,'||') WITHIN GROUP(ORDER BY 1)
INTO l_list
FROM user_tab_columns
WHERE TABLE_NAME = 'GRAFIK'
AND column_name LIKE 'N%';
EXECUTE IMMEDIATE 'SELECT '||l_list||' FROM GRAFIK WHERE kod_sotr=:A AND god=:year' INTO l_res USING i_code,i_year;
RETURN RTRIM(l_res,',');
END;
...
Рейтинг: 0 / 0
Преобразование чисел в дату
    #39416602
Мастердат
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Norman94,
Цикл to_date('25.12.2016','dd.mm.yyyy')+7*n, где n - порядковый номер недели.
...
Рейтинг: 0 / 0
Преобразование чисел в дату
    #39416606
Norman94
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мастердат, в моём случае как это будет грамотно выглядеть? А то я пытался поставить to_date (((LTRIM(column_name,'N')*7)-6), ''dd.mm.yyyy''), но он выдаёт ошибку
...
Рейтинг: 0 / 0
Преобразование чисел в дату
    #39416620
Norman94
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мастердат, подставил таким образом в запрос, пишет неверное число

SELECT listagg('CASE WHEN '||column_name||' IN(''у'',''о'') THEN '|| to_date('25.12.2016','dd.mm.yyyy')+7*(LTRIM(column_name,'N'))||'||'','' ELSE NULL END ' ,'||')
WITHIN GROUP(ORDER BY 1)
FROM user_tab_columns
WHERE TABLE_NAME = 'GRAFIK'
AND column_name LIKE 'N%';
...
Рейтинг: 0 / 0
Преобразование чисел в дату
    #39416623
Norman94,

про текст ошибки, версию сервера, вид входных данных следует догадаться? Первая неделя - это первые семь дней в году или кусок календарной недели до следующего дня, являющимся началом недели? Неделя начинается в понедельник или в воскресенье? 01.02.2017 - это первое февраля или второе января?
...
Рейтинг: 0 / 0
Преобразование чисел в дату
    #39416633
Norman94
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый Э - Эх,

авторпро текст ошибки, версию сервера, вид входных данных следует догадаться?
входные данные это число недели, 1, 2 и т.д.
автор Первая неделя - это первые семь дней в году или кусок календарной недели до следующего дня, являющимся началом недели?
Первая неделя - первые 7 дней в году, то бишь 1 января. 2 неделя - 8 января и т.д.
авторНеделя начинается в понедельник или в воскресенье?
С 1 января (при этом в условии про день не сказали)
...
Рейтинг: 0 / 0
Преобразование чисел в дату
    #39416663
Norman94
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Опишу ситуацию подробнее. Есть таблица График, в ней поля год, код юзера и 52 недели (n1, n2, n3... n52). График нужен для того, чтобы определять в какие недели у определённого юзера есть отпуск. На выходе с помощью данной функции получается:

год id_user Недели отпуска
2017 132131 1,2,3,4

Теперь же нужно сделать так, чтобы в поле недели отпуска выводились к примеру 01.01 - 29.01. В этом вся проблема.
...
Рейтинг: 0 / 0
Преобразование чисел в дату
    #39416665
Norman94,

А календарь григорианский, юлианский или стабильный?
...
Рейтинг: 0 / 0
Преобразование чисел в дату
    #39416669
Norman94
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
трунк+нум-1x7,

а какой у нас в данный момент?)
...
Рейтинг: 0 / 0
Преобразование чисел в дату
    #39416671
Vint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Norman94,
что структура таблицы что задача - бред. сотрудники могут взять отпуск на 53 неделе. но даже несмотря на это неспособность к 1 дню года прибавить неделю*7 это жестокий профессиональный приговор.
...
Рейтинг: 0 / 0
Преобразование чисел в дату
    #39416674
Norman94
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Vint,

Я понимаю, что это бред, и что это жестоко, но тем не менее мне нужно каким то чудом превратить недели в значения дня и месяца. Вот я и прошу тут подсказки.
...
Рейтинг: 0 / 0
Преобразование чисел в дату
    #39417070
Vint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Norman94,
и что тебе мешает взять дату прибавить номер недели умноженной на сем? или за тебя код писать?
...
Рейтинг: 0 / 0
Преобразование чисел в дату
    #39417219
stax..
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Norman94,

первая неделя всегда начинается 01.01, вторая 08.01?

если так, то банально to_char(to_date("год",'yyyy')+(n-1)*7,'dd.mm')

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

первая неделя всегда начинается 01.01, вторая 08.01?

если так, то банально to_char(to_date("год",'yyyy')+(n-1)*7,'dd.mm')

.....
stax

ой

to_char( trunc (to_date("год",'yyyy'),'y')+(n-1)*7,'dd.mm')

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

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


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