Получить текущие даты недели/месяца

Я хочу, чтобы функция получала даты текущей недели. Я буду передавать номер даты начала недели динамически. Дата начала недели может измениться. Это может быть воскресенье, понедельник или любой день. Я должен иметь возможность динамически передавать номер даты начала недели.

Если я вызываю функцию GetCurrentWeekDates (weekStartDay NUMBER, callingday Date), я должен получить результат, подобный следующему

GetCurrentWeekDates(1,'04.10.2022') --1 — воскресенье.

Результат должен быть следующим

10/04/2022
11/04/2022
12/04/2022
13/04/2022
14/04/2022
15/04/2022
16/04/2022

и когда GetCurrentWeekDates(1,11/04/2022) --1 воскресенье

Результат должен быть следующим

11/04/2022
12/04/2022
13/04/2022
14/04/2022
15/04/2022
16/04/2022

и когда GetCurrentWeekDates(1,'14/04/2022') --1 воскресенье

Результат должен быть следующим

14/04/2022
15/04/2022
16/04/2022

Сходным образом

Я хочу сделать функцию для получения дат текущего месяца. Я буду передавать номер месяца динамически

Если я вызываю функцию GetCurrentMonthDates (monthNumber NUMBER, callingday Date), я должен получить результат, подобный следующему

GetCurrentMonthDates(4,'04/04/2022') 4 — апрель.

Результат должен быть следующим

01/04/2022
02/04/2022
.
.
30/04/2022

GetCurrentMonthDates(4,'16/04/2022') 4 — апрель.

Результат должен быть следующим

16/04/2022
17/04/2022
.
.
30/04/2022

Как вы хотите вернуть результат? Как массив? В качестве курсора? Как строка с переводом строки? Или просто как dbms_output? Вы уже начали писать функцию? Где именно ты застрял?

Thorsten Kettner 09.04.2022 16:48
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
Четыре эффективных способа центрирования блочных элементов в CSS
Четыре эффективных способа центрирования блочных элементов в CSS
У каждого из нас бывали случаи, когда нам нужно отцентрировать блочный элемент, но мы не знаем, как это сделать. Даже если мы реализуем какой-то...
0
1
30
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вот вариант неделю; Я позволю вам написать функцию месяц самостоятельно (теперь, когда вы знаете, это не должно быть слишком сложно).

SQL> create or replace function f_week (par_start_day in varchar2, par_datum in date)
  2    return sys_refcursor
  3  is
  4    -- PAR_START_DAY: mon, tue, ..., sat, sun
  5    rc sys_refcursor;
  6  begin
  7    open rc for
  8      select par_datum + level - 1
  9      from dual
 10      connect by level <= next_Day(par_datum, par_start_day) - par_datum;
 11    return rc;
 12  end;
 13  /

Function created.

Тестирование:

SQL> select f_week('sun', date '2022-04-10') from dual;

F_WEEK('SUN',DATE'20
--------------------
CURSOR STATEMENT : 1

CURSOR STATEMENT : 1

:B1+LEVEL-1
---------------
10.04.2022, sun
11.04.2022, mon
12.04.2022, tue
13.04.2022, wed
14.04.2022, thu
15.04.2022, fri
16.04.2022, sat

7 rows selected.

Еще немного тестирования:

SQL> select f_week('sun', date '2022-04-14') from dual;

F_WEEK('SUN',DATE'20
--------------------
CURSOR STATEMENT : 1

CURSOR STATEMENT : 1

:B1+LEVEL-1
---------------
14.04.2022, thu
15.04.2022, fri
16.04.2022, sat


SQL>

Другие вопросы по теме