weeknummers mysql php gelijk maken

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • InfoTracer
  • Registratie: November 2001
  • Laatst online: 05:58
Na heel wat zoeken en zelf testen te hebben gemaakt zit ik nog steeds met een vraag.

Vraag:
Waarom geeft de functie WEEK() in mysql (5.0) link als ik de mode op 1 zet geen 00 terug voor week 1 maar 01?

Wat al geprobeerd:
Ik heb al testen gemaakt om te kijken welke mode van mysql (zie link) er gelijk is aan de
PHP:
1
date("W",$timestamp)
van php.
Uitkomst is dat mode en 1 en 3 gelijk zijn aan php.

Dit heb ik getest met de datums:
28-12-jaar tussen 1970 en 2037 (is altijd laatst week)
4-1-jaar tussen 1970 en 2037 (is altijd eerst week)
bron van datums
De bovende link voldoent aan de iso 8601 zie link

Acties:
  • 0 Henk 'm!

Verwijderd

Uit de Mysql docs

Mode 1 Monday 0-53 with more than 3 days this year

04-01-2008 is week 1 omdat er dus 6 dagen van deze week t/m zondag inzitten!

Acties:
  • 0 Henk 'm!

Verwijderd

Verwijderd schreef op vrijdag 22 februari 2008 @ 13:04:
Uit de Mysql docs

Mode 1 Monday 0-53 with more than 3 days this year

04-01-2008 is week 1 omdat er dus 6 dagen van deze week t/m zondag inzitten!
Maar mode 1 betekent ook dat de teller op 0 begint als ik het goed begrijp, dus waarom komt er dan 1 uit terwijl het de eerste week is?

Acties:
  • 0 Henk 'm!

  • InfoTracer
  • Registratie: November 2001
  • Laatst online: 05:58
maar waarom geeft mysql van "01" terug ipv "00"
omdat de rage van 0-53 kan lopen

snap ik het verschil tussen mode 1 en 3 dan niet echt goed?

idd wat HereIam hier boven zegt daar zit ik dus ook mee

[ Voor 16% gewijzigd door InfoTracer op 22-02-2008 13:12 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Als jullie wat verder lazen in de docs zagen jullie dit:

Note that if a date falls in the last week of the previous year, MySQL returns 0 if you do not use 2, 3, 6, or 7 as the optional mode argument:

Acties:
  • 0 Henk 'm!

Verwijderd

Verwijderd schreef op vrijdag 22 februari 2008 @ 15:27:
Als jullie wat verder lazen in de docs zagen jullie dit:

Note that if a date falls in the last week of the previous year, MySQL returns 0 if you do not use 2, 3, 6, or 7 as the optional mode argument:
De datum mag dan mss wel in de laatste week van het jaar daarvoor vallen, maar mysql had dan nu toch echt 0 moeten returnen zoals in je opmerking ook staat. En dat gebeurt dus niet, er komt een 1 uit omdat het de eerste week is (maar de range is 0..53 dus zou het 0 moeten zijn).

Acties:
  • 0 Henk 'm!

Verwijderd

Denk nou eens na... range 0-53 dat zijn toch echt 54 weken, dat past echt niet in 1 jaar 8)7 die 0 is puur om aan te geven dat je in de laatste week van het vorige jaar zit.

Acties:
  • 0 Henk 'm!

  • InfoTracer
  • Registratie: November 2001
  • Laatst online: 05:58
Verwijderd schreef op vrijdag 22 februari 2008 @ 15:59:
Denk nou eens na... range 0-53 dat zijn toch echt 54 weken, dat past echt niet in 1 jaar 8)7 die 0 is puur om aan te geven dat je in de laatste week van het vorige jaar zit.
Snap nu wel wat je bedoelt maar is het niet dat ie dan week 52 of 53 moet aangeven omdat het dan die laatste week van dat jaar is ipv 0?

kan je misschien een voorbeeld geven ter verduidelijking

Acties:
  • 0 Henk 'm!

  • P.O. Box
  • Registratie: Augustus 2005
  • Niet online
InfoTracer schreef op vrijdag 22 februari 2008 @ 16:06:
[...]


Snap nu wel wat je bedoelt maar is het niet dat ie dan week 52 of 53 moet aangeven omdat het dan die laatste week van dat jaar is ipv 0?
nee, want als jij een datum kiest die bij week 53 hoort, maar wel in bijv. 2008 valt, krijg je als resultaat: week 53.... en hoe ga jij dan onderscheid maken of dat week 53 van 2007 of week 53 van 2008 is??? precies!!! als het 0 is is het dus eigenlijk de laatste week van het jaar ervoor, als het 52 of 53 is, is het de laatste week van het jaar zelf..

Acties:
  • 0 Henk 'm!

Verwijderd

Verwijderd schreef op vrijdag 22 februari 2008 @ 15:59:
Denk nou eens na... range 0-53 dat zijn toch echt 54 weken, dat past echt niet in 1 jaar 8)7 die 0 is puur om aan te geven dat je in de laatste week van het vorige jaar zit.
Dat vond ik dus ook al zo raar. Maar waarom komt er dan uit 3-jan-2037 in mode 1 geen 0 of 53? Die datum zou dan niet in de eerste week vallen (want de eerste week begint op ma 4 jan), maar dus in de laatste week van het jaar daarvoor. Er komt echter gewoon een 1 uit. Was ff in de war met de dagen, klopt toch

[ Voor 4% gewijzigd door Verwijderd op 22-02-2008 16:19 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Edwardvb schreef op vrijdag 22 februari 2008 @ 16:12:
[...]


nee, want als jij een datum kiest die bij week 53 hoort, maar wel in bijv. 2008 valt, krijg je als resultaat: week 53.... en hoe ga jij dan onderscheid maken of dat week 53 van 2007 of week 53 van 2008 is??? precies!!! als het 0 is is het dus eigenlijk de laatste week van het jaar ervoor, als het 52 of 53 is, is het de laatste week van het jaar zelf..
Ja slaat de spijker op zijn kop 8)7 (smiley = spijker)

Acties:
  • 0 Henk 'm!

  • InfoTracer
  • Registratie: November 2001
  • Laatst online: 05:58
Verwijderd schreef op vrijdag 22 februari 2008 @ 16:25:
[...]


Ja slaat de spijker op zijn kop 8)7 (smiley = spijker)
snap nu wat er met de 0 wordt bedoeld.
want je zal snel denken dat het week 52/53 is van het jaar van de datum die je heb opgegeven

bv.
Note that if a date falls in the last week of the previous year, MySQL returns 0 if you do not use 2, 3, 6, or 7 as the optional mode argument:


mysql> SELECT YEAR('2000-01-01'), WEEK('2000-01-01',0);
-> 2000, 0
2000-01-01 is eigenlijk week 52 maar dan van 1999 en niet van 2000 wat je snel kan denken ivm met de datum 2000-01-01

ik zal alleen dit niet nodig hebben omdat ik in me query ook naar het jaar kijk
PHP:
1
2
3
4
5
6
7
8
        $query = "
        SELECT *
        FROM
            rooster
        WHERE
        WEEK(FROM_UNIXTIME(roos_timestamp), 3) = '$week' AND
        YEAR(FROM_UNIXTIME(roos_timestamp)) = '$jaar'
        ";
Pagina: 1