week in Mysql [Re: OT weekdates in MSSQL [Re: just to laugh]]

Luuk <[email protected]> Sun, 30 Aug 2020 09:51:06 +0200
Newsgroups comp.databases.mysql
Message-ID <[email protected]>
On 29-8-2020 19:04, Lyle H. Gray wrote:
> Jim H <[email protected]> wrote in
> news:[email protected]:
> 
>>> IIRC iso weeks start on Monday, ordinary weeks start on Sunday.
>>> Look at the linux 'date' command, specifically %V (%G) and %U
>>> That may suggest why 20210101 is isoweek 53.
>>
>> As I (think I) recall... you can get the ISO week by counting
>> Thursdays in the year to date.
> 
> The first "full" week of the year under ISO standard 8601 is the first week
> with four days/first week with a Thursday in it (ISO weeks start on Monday,
> not Sunday, as noted above).
> 
> In this group, though, we should be talking about the functions WEEK(),
> YEARWEEK(), and WEEKOFYEAR(), not DATEPART(), since MySQL doesn't have a
> DATEPART() function.
> 
> 
> 

WITH RECURSIVE days as (
   SELECT cast('2021-01-01' as date) d
   union all
   SELECT date_add(d,INTERVAL 1 day) from days where d < '2021-01-06')
select
    d, week(d),
    week(d,0) W0,
    week(d,1) W1,
    week(d,2) W2,
    week(d,3) W3,
    week(d,4) W4,
    week(d,5) W5,
    week(d,6) W6,
    week(d,7) W7,
    weekofyear(d) WOY,
    yearweek(d) YOW,
    yearweek(d,0) YOW0,
    yearweek(d,1) YOW1
FROM days;

(output, in CSV):
d , week(d) , W0 , W1 , W2 , W3 , W4 , W5 , W6 , W7 , WOY , YOW , YOW0 , YOW1
2021-01-01 , 0 , 0 , 0 , 52 , 53 , 0 , 0 , 53 , 52 , 53 , 202052 , 202052 , 
202053
2021-01-02 , 0 , 0 , 0 , 52 , 53 , 0 , 0 , 53 , 52 , 53 , 202052 , 202052 , 
202053
2021-01-03 , 1 , 1 , 0 , 1 , 53 , 1 , 0 , 1 , 52 , 53 , 202101 , 202101 , 202053
2021-01-04 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 202101 , 202101 , 202101
2021-01-05 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 202101 , 202101 , 202101
2021-01-06 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 202101 , 202101 , 202101

conclusion, there is nothing to laugh about ...