weeknmr uit maand halen

Overzicht Reageren

John van der Linden

John van der Linden

01/08/2010 09:29:34
Quote
Hoi,

Ik heb naast mijn kolom van datum een kolom met weeknummers

dus bv

datum weeknmr
20100726 26
20100727 26

Nou zou ik graag een query maken dat ik van een bepaalde maand de bijbehorende weeknummers ophaald, dus bv

maand januari : week 1, 2 , 3 en 4

Doel is om vervolgens met deze weeknummers weer verder te werken...

Iemand suggesties ?
 
PHP hulp

PHP hulp

10/09/2010 00:27:15
Gesponsorde koppelingen:
 
Mark L

Mark L

01/08/2010 09:41:43
Quote
Met Datepart kun je - in gebruik met 'wk' - het weeknummer opvragen. Dit hoef je dus niet apart op te slaan.

Een SQL-query zou kunnen zijn:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
SELECT
   DATEPART(wk, datum) as weeknr
FROM
   tabel
WHERE
   datum BETWEEN '2010-01-01' AND '2010-01-31'
GROUP BY
   weeknr


Dit is trouwens ook in PHP te doen. Eigenlijk hoef je voor jouw verhaal alleen de eerste én het laatste weeknummer te weten. Dan moet je dus:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
    $startWeek
= date('W', mktime(0, 0, 0, 1, 1, 2010));
    $eindWeek = date('W', mktime(0, 0, 0, 1, 31, 2010));
?>


Maar SQL is toch vaak beter met Datum-functies.
 
John van der Linden

John van der Linden

01/08/2010 10:26:27
Quote
Hoi Mark,

Bedankt voor je reactie !

Het lastige is denk ik alleen dat ik geen begin en eind datum van die maand hebt.
Ik heb alleen de maandnummer, dus ik kan de hele maand seleceteren...maar kan ik daar dan ook de weeknummers uit pulken ?
 
Karl Karl

Karl Karl

01/08/2010 10:31:01
Quote
Mark L op 01/08/2010 09:41:43:
Met Datepart kun je - in gebruik met 'wk' - het weeknummer opvragen. Dit hoef je dus niet apart op te slaan.


Dat is iets van microsoft database. Hij gebruikt mysql.
Verder moet hij eens dat achterlijke formaat weg doen en die datum opslaan als een echte datum, zoals eerder vermeld.
Dan kan hij gewoon gebruik maken van de mysql functie week.
 
John van der Linden

John van der Linden

01/08/2010 11:20:43
Quote
@ KArl : wat bedoel je nou met achterlijk formaat ? Het is gewoon een dateveld
 
SanThe Nvt

SanThe Nvt

01/08/2010 11:42:35
Quote
dateveld?

DATE of DATETIME
 
Mark L

Mark L

01/08/2010 11:46:58
Quote
@ Karl.
Oh. Had 't even opgezocht op google, maar ik had SQL ingetypt. Kan dus idd zijn dat het Microsoft is. Verder niet naar gekeken. Bedankt voor de info! :)

John van der Linden op 01/08/2010 10:26:27:
...
Het lastige is denk ik alleen dat ik geen begin en eind datum van die maand hebt.
Ik heb alleen de maandnummer, dus ik kan de hele maand seleceteren...maar kan ik daar dan ook de weeknummers uit pulken ?

Je hebt alleen een maandnummer? Dus Januari is dan dus 1. Ik zie het probleem niet. Januari duurt 31 dagen, Februari 28 (als jaar%4 === round(jaar%4), dan 29), Maart 31, April 30, Mei 31... etc.
Je kunt de begin en einddata dus zelf invullen. Ook kun je doen +1 maand...
 
Lars Groot

Lars Groot

01/08/2010 12:14:43
Quote
Inderdaad, gebruik gewoon Datetime();
Met PHP vul je die zo:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
// Hiervoor de MySQL verbinding starten!
mysql_query("UPDATE tabel SET veldmetdatetime=NOW() WHERE veld='Dit'");
// Of een insert:
mysql_query("INSERT INTO tabel (veldmetdatetime) VALUES(NOW())");
?>


Je leest het zo uit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
// Hiervoor de MySQL connectie starten!
$res = mysql_query("SELECT UNIX_TIMESTAMP(veldmetdatetime) AS datum FROM tabel WHERE veld='dit'");
$sel = mysql_fetch_array($res);

echo 'De tijd is: '.date("H:i", $sel['datum']);
?>


Succes,

Lars
 
Milo S

Milo S

01/08/2010 12:35:39
Quote
Als je nu je datums opslaat zoals het hoort, datetime of date. Dan kan je met de functie WEEK() van mysql zo je weeknummer opvragen.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
$qry
= "SELECT
            veld1,
            veld2,
            veld3,
            WEEK(datum) AS weeknummer,
            DATE_FORMAT(datum, '%d-%m-%y %H:%i') AS newdate
        FROM
            tebelnaam
        ORDER BY
            veld1
        ASC"
;

if($sql = mysql_query($qry))
{

    // Goed, maar nog wel even meer controles inbouwen.
    $rec = mysql_fetch_assoc($sql);
    
    echo 'Op de dag '.$rec['newdate'].' zit je in week '.$rec['weeknummer'];
}

else
{
    echo 'Fout in query.';
}

?>


Dit iets wat je bedoelt?
 
John van der Linden

John van der Linden

01/08/2010 12:43:01
Quote
date veld dus..oke, bedankt allemaal....gaat er even mee aan de slag !!!
 



Overzicht Reageren