Ik heb al met google gezocht maar ik kan het niet vinden!
Ik zoek een manier om de yearweek uit een timestamp te halen
Ik wil dat het volgende gaat werken:
<?php
$tijd = time();
$pageloads = mysql_query("SELECT SUM(pageloads) FROM teller WHERE YEARWEEK(tijd,7)=YEARWEEK('".$tijd."',7) ");
?>
De YEARWEEK functie in MySQL pas je toe op een DATE veld. Aangezien $tijd bij jou een echte timestamp (het aantal seconden sinds 1-1-1970) is, gaat dat dus niet werken en zul je een andere oplossing moeten zoeken.
Waarom vergelijk je het jaartal en het weeknummer niet apart?
...
WHERE YEAR(datumveld) = 2009
AND WEEK(datumveld) = 52
ps. En deze twee waarden zijn eenvoudig met PHP uit je timestamp te halen. Die de [php]date()[/php] functie.
Maar het komt allemaal op hetzelde neer. Bepaal in PHP het jaartal en de week en gebruik vervolgens in MySQL de YEAR() en WEEK() functies.
Zoals jullie voorstellen had ik het aanvankelijk ook gemaakt maar dat gaat zo niet werken omdat een week over 2 jaren verdeeld kan zijn .
Als ik dus de gegevens opvraag van een een bepaalde week en jaar dan krijg ik dus een halve week als resultaat.
Das op zich wel weer waar, dus dat gaat niet helemaal op. Maar kan je dan niet iets doen waardoor je
MIN en MAX time ophaalt van een bepaalde week, of bepaald wat de startdatum van de week is en daar gewoon 7 dagen bij optellen, is misschien makkelijker.
Dus miss in een subquery:
SELECT MIN(time) FROM tabel, met dezelfde where als hierboven. Dat is dan de begindatum, en dan hoef je alleen nog maar +INTERVAL 7 DAY te gebruiken om de gehele week te bepalen.
SELECT MIN(time) FROM tabel, met dezelfde where als hierboven. Dat is dan de begindatum (...)
Dat is niet zeker. Als er geen record voor de eerste dag van die betreffende week bestaat, heb je een probleem. Je selecteert dan direct ook een gedeelte van een volgende week...