Oracle - фильтрация результатов между измененной рабочей неделей

Используя Oracle, я в настоящее время фильтрую данные, используя И schedstart МЕЖДУ (TRUNC(SYSDATE - (TO_CHAR(SYSDATE,'D')+6))) AND (TRUNC(SYSDATE - (TO_CHAR(SYSDATE,'D')-1)) )) это не то, что я хочу.

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


person user3175423    schedule 08.01.2014    source источник
comment
Применение To_Char() к sysdate преобразует его в строку символов. Вероятно, вы намереваетесь удалить компонент времени - сделайте это с помощью Trunc(sysdate)   -  person David Aldridge    schedule 09.01.2014


Ответы (1)


Чтобы найти начало следующей недели, вы должны использовать Next_Day():

Next_Day(Trunc(SysDate),'WED')

Поэтому, чтобы найти начало «этой» недели, используйте:

Next_Day(Trunc(SysDate),'WED') - 7

Таким образом, чтобы ограничить schedstart текущей рабочей неделей (при условии, что schedstart не имеет компонента времени):

schedstart between Next_Day(Trunc(SysDate),'WED') - 7
               and Next_Day(Trunc(SysDate),'WED') - 1
person David Aldridge    schedule 08.01.2014
comment
Большое спасибо, Марк, отлично работает. Как изменить фильтр на неделю вперед? - person user3175423; 09.01.2014
comment
Добавьте семь дней к sysdate. - person David Aldridge; 09.01.2014