Формат недели по умолчанию Oracle рассчитывает номер недели с первого дня года, а не с первого дня недели.
Так, если год начинается 01 января 2009 года, и первый день включенСреда, неделя № 1 будет с 01 января 2009 года по 08 января 2009 года (со среды по вторник).
Вы можете использовать формат "iw" (и небольшую настройку), если вам нужнодиапазон недели начинается с воскресенья по субботу.http://download -uk.oracle.com / docs / cd / B14117_01 / server.101 / b10749 / ch9sql.htm # CIHGFJEI
Попробуйте этот код ниже.Я в основном использую формат "IW" и добавляю условие, чтобы номер недели начинался с указанной даты .. скажем ... 01-Jul-2008.
select target_date,
to_char(target_date+1,'iw') week_sun_thru_saturday,
to_number(to_char(target_date+1,'iw')) -
to_number(to_char( to_date('10-jul-2008','dd-mon-yyyy')+1,'iw')) week_from_01_jul_2008
from t;
Помните ... Этот код будетне давать неделю номер 1 с 1 июля по 7 июля. Если, конечно, 01 июля 2008 года - воскресенье;)