2014-09-04 5 views
0

올해 2014 있습니다ISO 표준에 따라 2015 년과 2016 년의 각 달에 몇 주가 있습니까?

Jan-4 
Feb-4 
Mar-5 
Apr-4 
May-4 
Jun-5 
Jul-4 
Aug-4 
Sep-5 
Oct-4 
Nov-4 
Dec-5 

어떻게 특정 연도에 대한이를 계산하기 위해?

+2

[월 주 PHP get 및 번호 (의 중복 가능성 http://stackoverflow.com/questions/5853380/php-get-number -of-week-for-month) – Sal00m

+0

일주일에 번호 매기기를 위해 _rule_을 이해하지 않는 이유는 무엇입니까? http://en.wikipedia.org/wiki/ISO_week_date#Weeks_per_year –

+1

질문에 의미가 없습니다. * ISO 표준은 몇 주에서 수개월 간의 연관성을 정의하지 않습니다. 날짜는 월과 일로 표시되거나 주와 요일로 표시됩니다 ** ** 결코 혼합 **. * http://en.wikipedia.org/wiki/ISO_week_date # Weeks_per_month – pozs

답변

1

정확하게 "월 단위"를 정의하는 여러 가지 방법이 있습니다. (당신의 숫자 표시로) 당신의 카운트가 정의 가정 :

How many Mondays lie in each month of the year?

당신은 그런 식으로 생성 할 수 있습니다 :

간단한 :

SELECT EXTRACT(month FROM d) AS mon, COUNT(*) AS weeks 
FROM generate_series('2014-01-01'::date 
        , '2014-12-31'::date 
        , interval '1 day') d 
WHERE EXTRACT(isodow FROM d) = 1 -- only Mondays 
GROUP BY 1 
ORDER BY 1; 

빠른 :

SELECT EXTRACT(month FROM d) AS mon, COUNT(*) AS weeks 
FROM generate_series ('2014-01-01'::date -- offset to first Monday 
         + (8 - EXTRACT(isodow FROM '2014-01-01'::date)::int)%7 
         , '2014-12-31'::date 
         , interval '7 days') d 
GROUP BY 1 
ORDER BY 1; 

어느 쪽이든 너는 얻을 것이다 :

mon weeks 
1 4 
2 4 
3 5 
4 4 
5 4 
6 5 
7 4 
8 4 
9 5 
10 4 
11 4 
12 5 

을 각 검색어의 해당 연도로 바꿉니다. 제안 한 달에 ISO 8601을 적용

+0

ISO 표준은 한 달의 월요일 수와 관련이 없습니다. (나는 OP가 무엇을 얻으려고하는지 확신 할 수 없다.) 2014 년 첫 번째 월요일은 실제로 ISO 주와 관련하여 2013-12-30입니다. –

+0

@Mike : * ISO * 2014 년 첫 번째 월요일은 2013-12-30입니다. 그레고리력의 첫 번째 월요일 ("2014"의 일반적인 의미)은 2014-01-06입니다. "한 달에 몇 주"는 ISO 또는 질문에 의해 정의되지 않습니다. 주어진 숫자에서 가장 가능성있는 의미를 리버스 엔지니어링했습니다. –

0

here

select 
    to_char(d, 'YYYY Mon') as "Month", 
    case when 
     extract(dow from d) in (2,3,4) 
     and 
     extract(day from (d + interval '1 month')::date - 1) + extract(dow from d) >= 33 
     then 5 
     else 4 
    end as weeks 
from generate_series(
    '2014-01-01'::date, '2014-12-31', '1 month' 
) g (d) 
; 
    Month | weeks 
----------+------- 
2014 Jan |  5 
2014 Feb |  4 
2014 Mar |  4 
2014 Apr |  4 
2014 May |  5 
2014 Jun |  4 
2014 Jul |  5 
2014 Aug |  4 
2014 Sep |  4 
2014 Oct |  5 
2014 Nov |  4 
2014 Dec |  4