Как получить недельные данные в Oracle - PullRequest
4 голосов
/ 30 января 2012

Я сделал матричный отчет, в котором нужно динамически отображать столбец на основе параметра выбора.У меня есть параметр выбора даты.

Если я выберу Дату в параметре выбора как «03/01/2010», то есть 1 марта 2010 г., то она должна отображаться как 1 марта - 7 марта

Ответы [ 2 ]

4 голосов
/ 30 января 2012

Чтобы получить данные за неделю, а не за следующие семь дней, используйте функцию TRUNCATE с аргументом W, чтобы разбить данные на календарные недели.

select trunc(date '2012-01-30', 'w') from dual;

TRUNC(DATE'2012-01-
-------------------
2012-01-29 00:00:00

Примечание.день недели, до которого это усечение зависит от данных NLS - в некоторых локализациях недели начинаются с воскресенья;в другие понедельник.

4 голосов
/ 30 января 2012

Это зависит от того, что вы после. Если вы после следующих 7 дней, то:

select * 
  from my_table
 where date_col between :my_date and :my_date + 7

Если вы хотите сказать с понедельника по воскресенье, используйте функцию next_day:

select *
  from my_table
 where date_col between next_day(:my_date, 'Monday') - 7 
                    and next_day(:my_date, 'Monday')

Оба, где :my_date - дата вашего прохождения.

Если вы передаете не дату, а строку, то первая становится, используя функцию to_date:

select *
  from my_table
 where date_col between to_date(:my_date,'dd/mm/yyy') + 7
                    and to_date(:my_date,'dd/mm/yyy')

и вы могли бы сделать что-то подобное для второго. Если вам нужно использовать to_date, тогда date_col должен иметь индекс на основе функций для to_date(date_col,'dd/mm/yyyy') или если вы собираетесь конвертировать его по-другому, тогда таким способом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...