ГОД () в Oracle10g? - PullRequest
       17

ГОД () в Oracle10g?

0 голосов
/ 15 сентября 2011

В MySql я могу использовать YEARWEEK (), чтобы получить неделю и соответствующий год этой недели в одной строке.(Например, SELECT YEARWEEK('1987-01-01');, что приводит к "198653").

Есть ли что-нибудь подобное в Oracle10g?

Я знаю только о функции TO_CHAR.Но если я использую TO_CHAR(sysdate, 'YYYYIW');, я получаю 198753, а не 198653. Итак, как мне правильно рассчитать это?

Ответы [ 2 ]

2 голосов
/ 15 сентября 2011

Имеет ли значение формат IYYYIW с TO_CHAR(), какая разница?Обратите внимание на « I » в начале вместо первого «Y», это для 4-значного года на основе стандарта ISO.

0 голосов
/ 15 сентября 2011

Я не могу воспроизвести ваш пример того, что Oracle возвращает 198753.

select TO_CHAR(DATE '1987-01-01', 'YYYYIW') from dual возвращает мне 198701, что является правильным в соответствии с определением ISO номеров недель.

Oracle имеетдругая маска формата WW (вместо IW), которая использует неделю, в которой первый день года указан как неделя № 1, что опять-таки вернет номер недели 1 для 1 января.

Естьпосмотрите здесь: http://en.wikipedia.org/wiki/Week_number#Week_numbering

Я нахожу номер недели в MySQL немного странным, потому что ни одна схема нумерации неделей, которую я знаю, не вернула бы 53-ю неделю 1 января 1987 года (но это не так много значит...)

...