trunc (to_date('15-jun-2012') - sysdate)
даст вам количество календарных дней с настоящего момента до 15 июня следующего года.
Это должно помочь вам начать.
Если у вас есть сохраненный элемент данных даты / времени, это выражение:
trunc (stored,'DAY')
возвращает полночь в предыдущее воскресенье (см. http://www.techonthenet.com/oracle/functions/trunc_date.php),, например,
select count(*) events_per_week,
trunc(event_time,'DAY') week_starting
from event
group by trunc(event_time,'DAY')
скажет вам, сколько событий в неделю у вас есть в таблице событий. Это ценный способ суммирования данных неделя за неделей, поскольку он работает как на короткие, так и на многолетние периоды времени.
Если ваши бизнес-правила требуют, чтобы ваша неделя начиналась в понедельник, сделайте это вместо этого.
1+trunc(stored-1,'DAY')
Если вы хотите, чтобы элемент данных даты / времени был похож на '2011-43', тогда сделайте
to_date ( '2011-43', 'YYYY-WW')
или
to_date ( '2011-43', 'YYYY-IW')
в зависимости от того, используете ли вы номера недели ISO. См http://www.techonthenet.com/oracle/functions/to_date.php.
Я предпочитаю способ определения недели в воскресенье-полночь; он довольно интуитивно понятен («Неделя начинается с 13 ноября 2011 года») и обрабатывает переходы на конец года простым способом.