Я использую функцию Oracle to_char () для преобразования даты в число недели (1-53):
select pat_id,
pat_enc_csn_id,
contact_date,
to_char(contact_date,'ww') week,
...
переключатель 'ww' дает мне следующие значения для дат в январе этого года:
Date Week
1-Jan-10 1
2-Jan-10 1
3-Jan-10 1
4-Jan-10 1
5-Jan-10 1
6-Jan-10 1
7-Jan-10 1
8-Jan-10 2
9-Jan-10 2
10-Jan-10 2
11-Jan-10 2
12-Jan-10 2
быстрый просмотр календаря показывает, что эти значения должны быть:
Date Week
1-Jan-10 1
2-Jan-10 1
3-Jan-10 2
4-Jan-10 2
5-Jan-10 2
6-Jan-10 2
7-Jan-10 2
8-Jan-10 2
9-Jan-10 2
10-Jan-10 3
11-Jan-10 3
12-Jan-10 3
если я использую переключатель 'iw' вместо 'ww', результат будет менее желательным:
Date Week
1-Jan-10 53
2-Jan-10 53
3-Jan-10 53
4-Jan-10 1
5-Jan-10 1
6-Jan-10 1
7-Jan-10 1
8-Jan-10 1
9-Jan-10 1
10-Jan-10 1
11-Jan-10 2
12-Jan-10 2
Есть ли другая функция Oracle, которая будет рассчитывать недели, как я ожидал, или мне нужно написать свою собственную?
EDIT
Я пытаюсь соответствовать логике, используемой Crystal Reports. Каждая полная неделя начинается в воскресенье; первая неделя года начинается с того дня, который представлен 1 января (например, в 2010 году 1 января - пятница).