powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Номер недели!
5 сообщений из 30, страница 2 из 2
Номер недели!
    #32060351
Trampler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to SAA_

Читай внимательно -
select to_char(to_date('31.12.2002', 'DD.MM.YYYY'), 'IW') возвращает 01 вместо 53
select to_char(to_date('07.01.2002', 'DD.MM.YYYY'), 'WW') возвращает 01 вместо 02

Тогда и доставать не будет...

Да и вообще, вопрос уже закрыт по-моему, правильный вариант был предложен.
...
Рейтинг: 0 / 0
Номер недели!
    #32060387
Фотография softy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"select to_char(to_date('31.12.2002', 'DD.MM.YYYY'), 'IW') возвращает 01 вместо 53"

Да, я согласен, формально должно быть 53, а не 1. Но ведь эта неделя не полная, в неё входит только понедельник и вторник(30 и 31). Остальные дни недели относятся к другому году и являются именно первой неделей следующего года. Можем ли мы утверждать что это именно 53 неделя? Может ли она считатся полноценной неделей? Ведь неделя это не два дня, а семь дней, то есть начиная (для России) с понедельника и заканчивая воскресеньем.
Если мы будем считать что это 53 неделя 2002 года и 1 неделя 2003 года одновременно, то при подсчёте недель в двух годах, получим одну лишнюю неделю, которая учлась дважды. Правильно ли это?
Или такой пример: возьмём скажем следующую неделю октября 2002г., с 28 октября по 3 ноября. Так вот, относительно реального календаря это одна неделя, а не две. Не две, только потомучто она попала в два месяца.
Поэтому "select to_char(to_date('31.12.2002', 'DD.MM.YYYY'), 'IW') возвращает 01 вместо 53", выглядит вполне логичным.
Использование маски 'IW' даёт именно то что Andrey хотел.
"Ошибка" происходит только для дней года последней недели, если она не заканчивается воскресеньем.
Для этого можно делать отдельную проверку, а в основном пользоваться IW.
...
Рейтинг: 0 / 0
Номер недели!
    #32060409
Trampler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To softbulder

Извини, но ты опять не прав.

Использование маски 'IW' даёт именно то что Andrey хотел. Как известно, он хотел "номер недели относительно реального календаря ..."
То есть, ну уж никак не хотел
to_char(to_date('01.01.2005', 'DD.MM.YYYY'), 'IW') = 53.
Да и про "ошибку" все совсем не так.

Еще раз, правильный с точки зрения постановки вопроса вариант был предложен - 18 окт 02, 16:52.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Номер недели!
    #39746457
Festani_10
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AndreyВсе было бы здорово, если бы
SELECT TO_CHAR(TO_DATE('07-JAN-2002','DD-MON-YY'), 'WW') "New Year" FROM DUAL;
давало вторую неделю, а не первую ..
а мне бы нужно номер недели относительно реального календаря ...

SELECT TO_CHAR(TO_DATE('07-JAN-2002','DD-MON-YY'), 'IW') "New Year" FROM DUAL;
...
Рейтинг: 0 / 0
Номер недели!
    #39746529
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Festani_10,

Невероятно актуальный ответ. Автор ждал его долгих 16 лет!
...
Рейтинг: 0 / 0
5 сообщений из 30, страница 2 из 2
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Номер недели!
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]