Re: convert week of the year into a date string

2008-08-20 Thread Phil
I did something similar to this recently. I ended up using the following

select date_sub(curdate(), interval(dayofweek(curdate()) + (($week - week) *
7) - 1) DAY) as mydate.

This was in php and ahead of time I set $week as select week(curdate()).

It could easily be extended with year.

Phil

On Wed, Aug 20, 2008 at 5:31 AM, Joerg Bruehe <[EMAIL PROTECTED]> wrote:

> Pintér Tibor wrote:
>
>>
>> Ananda Kumar írta:
>>
>>> Hi All,
>>> I think i worked on this and found the results.
>>>
>>>
>>> I did the below.
>>>
>>> 1. Multiplied the week_of_the_year with 7 (7 days per week), to get the
>>> total number of days from begning of the year.
>>>
>>> 2. used mysql function makedate
>>>   makedate(year,number of days from the start of the year)
>>>  makedate(2008,224)
>>> select makedate(2008,224);
>>> ++
>>> | makedate(2008,224) |
>>> ++
>>> | 2008-08-11 |
>>>
>>
>> this is definitely wrong, since you dont care about the fact that the
>> frist day of the year is not always Monday
>>
>
> I agree it is wrong, but for a slightly different reason:
>   What is the definition of "week of year" ?
> One problem is that the weekday of January 1 varies, the other is that the
> definition of "week" may not be universal (does it start with Sunday or
> Monday ?).
>
> I know of one widespread definition that (AFAIR) is (loosely)
> "The first week which has more than half of its days in a given year is
> called 'week 1' of that year."
> If you take Sunday as the start of the week, this translates to
> "Week 1 is the week which contains the first Wednesday of a year."
> (If your week starts Monday, the first Thursday determines it.)
>
> There is another definition that (loosely) says
> "The first week which has all its days in a given year is called 'week 1'
> of that year."
> Again, it is a separate question whether your weeks start Sunday or Monday.
>
> By both definitions, January 1 need not belong to week 1, it may belong to
> the last week of the previous year.
>
> See these lines quoted from Linux "man date":
>
>> ~> man date | grep week
>>   ...
>>   %g last two digits of year of ISO week number (see %G)
>>   %G year of ISO week number (see %V); normally useful only with
>> %V
>>   %u day of week (1..7); 1 is Monday
>>   %U week number of year, with Sunday as first day of week
>> (00..53)
>>   %V ISO week number, with Monday as first day of week (01..53)
>>   %w day of week (0..6); 0 is Sunday
>>   %W week number of year, with Monday as first day of week
>> (00..53)
>>
>
> According to Stevens ("Advanced Programming in the Unix environment", page
> 158), the "%U" and "%W" codes seem to use the "all days" (second)
> definition.
>
> I *guess* that the separate "ISO" reference implies that the ISO definition
> uses the "more than half" (first) definition, but I propose you check
> yourself.  From some references, I take it that is ISO 8601.
>
>
> To return to the original question:
> Sorry, I do not know a MySQL function to do that mapping.
> Your application language might offer something:
>
> From C, "strftime()" and/or "strptime()" might help.
> From Perl, I assume you can find something in CPAN.
> From other languages, I have no idea off-hand.
>
>
> But before coding anything, you have to check your definition of "week
> number", there are several to choose from.
>
>
> Regards,
> Jörg
>
> --
> Joerg Bruehe,  MySQL Build Team,  [EMAIL PROTECTED]   (+49 30) 417 01 487
> Sun Microsystems GmbH,   Sonnenallee 1,   D-85551 Kirchheim-Heimstetten
> Geschaeftsfuehrer: Thomas Schroeder, Wolfgang Engels, Dr. Roland Boemer
> Vorsitzender des Aufsichtsrates: Martin Haering Muenchen: HRB161028
>
>
>
> --
> MySQL General Mailing List
> For list archives: http://lists.mysql.com/mysql
> To unsubscribe:http://lists.mysql.com/[EMAIL PROTECTED]
>
>


-- 
Help build our city at http://free-dc.myminicity.com !


Re: convert week of the year into a date string

2008-08-20 Thread Joerg Bruehe

Pintér Tibor wrote:


Ananda Kumar írta:

Hi All,
I think i worked on this and found the results.


I did the below.

1. Multiplied the week_of_the_year with 7 (7 days per week), to get the
total number of days from begning of the year.

2. used mysql function makedate
   makedate(year,number of days from the start of the year)
  makedate(2008,224)
select makedate(2008,224);
++
| makedate(2008,224) |
++
| 2008-08-11 |


this is definitely wrong, since you dont care about the fact that the 
frist day of the year is not always Monday


I agree it is wrong, but for a slightly different reason:
   What is the definition of "week of year" ?
One problem is that the weekday of January 1 varies, the other is that 
the definition of "week" may not be universal (does it start with Sunday 
or Monday ?).


I know of one widespread definition that (AFAIR) is (loosely)
"The first week which has more than half of its days in a given year is 
called 'week 1' of that year."

If you take Sunday as the start of the week, this translates to
"Week 1 is the week which contains the first Wednesday of a year."
(If your week starts Monday, the first Thursday determines it.)

There is another definition that (loosely) says
"The first week which has all its days in a given year is called 'week 
1' of that year."

Again, it is a separate question whether your weeks start Sunday or Monday.

By both definitions, January 1 need not belong to week 1, it may belong 
to the last week of the previous year.


See these lines quoted from Linux "man date":

~> man date | grep week
   ...
   %g last two digits of year of ISO week number (see %G)
   %G year of ISO week number (see %V); normally useful only with %V
   %u day of week (1..7); 1 is Monday
   %U week number of year, with Sunday as first day of week (00..53)
   %V ISO week number, with Monday as first day of week (01..53)
   %w day of week (0..6); 0 is Sunday
   %W week number of year, with Monday as first day of week (00..53)


According to Stevens ("Advanced Programming in the Unix environment", 
page 158), the "%U" and "%W" codes seem to use the "all days" (second) 
definition.


I *guess* that the separate "ISO" reference implies that the ISO 
definition uses the "more than half" (first) definition, but I propose 
you check yourself.  From some references, I take it that is ISO 8601.



To return to the original question:
Sorry, I do not know a MySQL function to do that mapping.
Your application language might offer something:

From C, "strftime()" and/or "strptime()" might help.
From Perl, I assume you can find something in CPAN.
From other languages, I have no idea off-hand.


But before coding anything, you have to check your definition of "week 
number", there are several to choose from.



Regards,
Jörg

--
Joerg Bruehe,  MySQL Build Team,  [EMAIL PROTECTED]   (+49 30) 417 01 487
Sun Microsystems GmbH,   Sonnenallee 1,   D-85551 Kirchheim-Heimstetten
Geschaeftsfuehrer: Thomas Schroeder, Wolfgang Engels, Dr. Roland Boemer
Vorsitzender des Aufsichtsrates: Martin Haering Muenchen: HRB161028


--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:http://lists.mysql.com/[EMAIL PROTECTED]



Re: convert week of the year into a date string

2008-08-20 Thread Pintér Tibor


Ananda Kumar írta:

Hi All,
I think i worked on this and found the results.


I did the below.

1. Multiplied the week_of_the_year with 7 (7 days per week), to get the
total number of days from begning of the year.

2. used mysql function makedate
   makedate(year,number of days from the start of the year)
  makedate(2008,224)
select makedate(2008,224);
++
| makedate(2008,224) |
++
| 2008-08-11 |


this is definitely wrong, since you dont care about the fact that the 
frist day of the year is not always Monday


or do I misunderstand something?

t

--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:http://lists.mysql.com/[EMAIL PROTECTED]



Re: convert week of the year into a date string

2008-08-19 Thread Ananda Kumar
Hi All,
I think i worked on this and found the results.


I did the below.

1. Multiplied the week_of_the_year with 7 (7 days per week), to get the
total number of days from begning of the year.

2. used mysql function makedate
   makedate(year,number of days from the start of the year)
  makedate(2008,224)
select makedate(2008,224);
++
| makedate(2008,224) |
++
| 2008-08-11 |


Thanks a lot for all your help.

regards
anandkl


On 8/19/08, Phil <[EMAIL PROTECTED]> wrote:
>
> Ananda,
>
> I did something fairly similar to this just a few weeks ago.
>
> Unfortunately I don't have access to the server I did the script on until
> later tonight (EST).
>
> If no one has replied by then I will dig out the script and send it on to
> you.
>
> Phil
>
> On Tue, Aug 19, 2008 at 7:58 AM, Ananda Kumar <[EMAIL PROTECTED]> wrote:
>
>> HI All,
>> I have table which stores week_of_the_year and year.
>> For example
>>
>> week_of_yearYEAR
>> 32  2008
>>
>> I want to convert this into the date. That is , i need to get the date of
>> first day of the week 32.
>> some thing like
>>
>> 03-AUG-2008.
>>
>> Regards
>> anandkl
>>
>
>
>
> --
> Help build our city at http://free-dc.myminicity.com !
>
>


convert week of the year into a date string

2008-08-19 Thread Ananda Kumar
HI All,
I have table which stores week_of_the_year and year.
For example

week_of_yearYEAR
32  2008

I want to convert this into the date. That is , i need to get the date of
first day of the week 32.
some thing like

03-AUG-2008.

Regards
anandkl