Re: ISO weeknumbers

From: Shakespeare <whatsin_at_xs4all.nl>
Date: Tue, 06 Jan 2009 22:06:39 +0100
Message-ID: <4963c7df$0$187$e4fe514c_at_news.xs4all.nl>



Mark D Powell schreef:
> On Jan 6, 4:13 am, sybrandb <sybra..._at_gmail.com> wrote:
>> On 5 jan, 21:41, "Terry Dykstra" <tddyks..._at_forestoil.ca> wrote:
>>
>>
>>
>>
>>
>>> The IW format string returns the ISO week number
>>> IW
>>>  No
>>>      Week of year (1-52 or 1-53) based on the ISO standard.
>>> I'm confused by this.  When would you get week 53?  For example, when
>>> running this against the last week of 2008 (using 9.2.0.7 SE) , it switches
>>> from week 52 to week 1 while still in December.
>>> select to_char(to_date('20081228','yyyymmdd') ,'IW') from dual;> 52
>>> select to_char(to_date('20081229','yyyymmdd') ,'IW') from dual;
>>>> 01
>>> --
>>> Terry Dykstra
>> Week 53 occurs about once in 4 years.
>> This is why in the past have been hunting for a bug for 4 years.
>> The bug only occurred in week 53, as the application could only handle
>> 52-week years.
>>
>> --
>> Sybrand Bakker
>> Senior Oracle DBA- Hide quoted text -
>>
>> - Show quoted text -

>
> I found this thread interesting and ran a little test. I displayed
> the week number for all years from 1990 - 2029 for dates of 1227 to
> 0104. From this it appears that a year has 53 weeks every 5 or 6
> years. What really caught my eye was how often January 1 is part of
> the prior year.
>
> -- ISO Weeks in Year
>
> -- using SQL like
> -- select
> -- to_char(to_date('19900104','yyyymmdd') ,'IW') as "90"
> -- ,to_char(to_date('19910104','yyyymmdd') ,'IW') as "91"
> -- ,to_char(to_date('19920104','yyyymmdd') ,'IW') as "92"
> -- ,to_char(to_date('19930104','yyyymmdd') ,'IW') as "93"
> -- ... from dual
>
> -- 1227 always week 52
> 90 91 92 93 94 95 96 97 98 99 00 01 02 03 04 05 06 07 08 09
> -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
> 52 52 52 52 52 52 52 52 52 52 52 52 52 52 53 52 52 52 52 52
>
>
> 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
> -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
> 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52
>
>
> -- 1228
> 90 91 92 93 94 95 96 97 98 99 00 01 02 03 04 05 06 07 08 09
> -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
> 52 52 53 52 52 52 52 52 53 52 52 52 52 52 53 52 52 52 52 53
>
>
> 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
> -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
> 52 52 52 52 52 53 52 52 52 52 53 52 52 52 52 52 53 52 52 52
>
>
> -- 1229
> 90 91 92 93 94 95 96 97 98 99 00 01 02 03 04 05 06 07 08 09
> -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
> 52 52 53 52 52 52 52 01 53 52 52 52 52 01 53 52 52 52 01 53
>
>
> 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
> -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
> 52 52 52 52 01 53 52 52 52 52 53 52 52 52 52 01 53 52 52 52
>
>
> -- 1230
> 90 91 92 93 94 95 96 97 98 99 00 01 02 03 04 05 06 07 08 09
> -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
> 52 01 53 52 52 52 01 01 53 52 52 52 01 01 53 52 52 52 01 53
>
>
> 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
> -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
> 52 52 52 01 01 53 52 52 52 01 53 52 52 52 01 01 53 52 52 52
>
>
> -- 1231
> 90 91 92 93 94 95 96 97 98 99 00 01 02 03 04 05 06 07 08 09
> -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
> 01 01 53 52 52 52 01 01 53 52 52 01 01 01 53 52 52 01 01 53
>
>
> 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
> -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
> 52 52 01 01 01 53 52 52 01 01 53 52 52 52 01 01 53 52 52 01
>
> -- 0101
> 90 91 92 93 94 95 96 97 98 99 00 01 02 03 04 05 06 07 08 09
> -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
> 01 01 01 53 52 52 01 01 01 53 52 01 01 01 01 53 52 01 01 01
>
>
> 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
> -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
> 53 52 52 01 01 01 53 52 01 01 01 53 52 52 01 01 01 53 52 01
>
>
> -- 0102
>
> 90 91 92 93 94 95 96 97 98 99 00 01 02 03 04 05 06 07 08 09
> -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
> 01 01 01 53 52 01 01 01 01 53 52 05 01 01 01 53 01 01 01 01
>
>
> 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
> -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
> 53 52 01 01 01 01 53 01 01 01 01 53 52 01 01 01 01 53 52 01
>
>
> -- 0103
> 90 91 92 93 94 95 96 97 98 99 00 01 02 03 04 05 06 07 08 09
> -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
> 01 01 01 53 01 01 01 01 01 53 01 09 01 01 01 01 01 01 01 01
>
>
> 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
> -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
> 53 01 01 01 01 01 53 01 01 01 01 53 01 01 01 01 01 53 01 01
>
>
> -- 0104
> 90 91 92 93 94 95 96 97 98 99 00 01 02 03 04 05 06 07 08 09
> -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
> 01 01 01 01 01 01 01 01 01 01 01 13 01 01 01 01 01 01 01 01
>
>
> 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
> -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
> 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
>
>
> HTH -- Mark D Powell --
>

Mark,

this partly proves my point that week 1 always contains January 4th. Thanks for that!

(except in 2001, when it was in week 13????)

You must have some errors in your script though, like this value:

 > -- 0103
 > 01
 > --
 > 09

which states that January 3rd was in week 9 in 2001

There are more of those errors in 2001....

Happy 2009!
Shakespeare Received on Tue Jan 06 2009 - 15:06:39 CST

Original text of this message