MySQL date deze week..
Ik heb een leden systeem, en wil alle leden weergeven die deze week (vanaf zondag t/m zaterdag) jarig zijn..
Nu dacht ik slim te zijn en dit te doen:
Maar dit werkt niet..
Want als ik dit doe:
Code (php)
1
SELECT DATE_FORMAT(NOW(),'%V') AS date1, DATE_FORMAT(Gebdatum,'%V') AS date2 FROM `members`
krijg ik dit:
Code (php)
1
2
3
4
5
2
3
4
5
--------------------
| date1 | date2 |
--------------------
| 14 | 13 |
---------------------
| date1 | date2 |
--------------------
| 14 | 13 |
---------------------
Iemand die me kan helpen?
Ik weet niet waar %V voor staat. Ik neem aan voor het weeknummer. Maar helaas hoeft het weeknummer van je geboortedag niet het weeknummer te zijn dat je ook echt jarig bent. Weeknummers verspringen om de zoveel jaar.
Daar heb je gelijk in, heb ik helemaal niet aan gedacht..
Enig idee hoe ik het dan kan doen?
Je kan natuurlijk heel simpel alleen de dag en maand van de geboortedatum ophalen en daarmee checken of dat in deze week valt.
Gebruik de functie WEEK() en geef de juiste parameters (zie handleiding) op. DATE_FORMAT() gebruik je voor de opmaak van datums, niet voor vergelijkingen.
Maar WEEK(NOW()) en WEEK(Gebdatum) geven precies hetzelfde resultaat (14 en 13)
Deze zet je dan in een query met between, dat zou prima moeten werken.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?php
//pak weekdagnummer
$weekday=date('w');
$dagen_tot_zaterdag=6-$weekday;
$zondag = DATE('Y-m-d',mktime(0, 0, 0, date('m'), date('d')-$weekday, date('Y')));
$zaterdag = DATE('Y-m-d',mktime(0, 0, 0, date('m'), date('d')+$dagen_tot_zaterdag, date('Y')));
$query="SELECT id FROM members WHERE Gebdatum BETWEEN '".$zondag."' AND '".$zaterdag."'";
?>
//pak weekdagnummer
$weekday=date('w');
$dagen_tot_zaterdag=6-$weekday;
$zondag = DATE('Y-m-d',mktime(0, 0, 0, date('m'), date('d')-$weekday, date('Y')));
$zaterdag = DATE('Y-m-d',mktime(0, 0, 0, date('m'), date('d')+$dagen_tot_zaterdag, date('Y')));
$query="SELECT id FROM members WHERE Gebdatum BETWEEN '".$zondag."' AND '".$zaterdag."'";
?>
Zoiets zou moeten werken, kan zijn dat er nog kleine foutjes in zitten.
Micha schreef op 04.04.2007 15:06:
En waar zijn jouw parameters voor de functie WEEK() ? Die schitteren door afwezigheid...Maar WEEK(NOW()) en WEEK(Gebdatum) geven precies hetzelfde resultaat (14 en 13)
Edit: RTFM... En bedenk dat je de ene keer in week 1 en de andere keer in week 2 jarig kunt zijn. Het is niet anders.
Gewijzigd op 01/01/1970 01:00:00 door Frank -
Frank schreef op 04.04.2007 15:13:
met NOW(),2 en Gebdatum,2 krijg ik nog steeds hetzelfde ;)Micha schreef op 04.04.2007 15:06:
En waar zijn jouw parameters voor de functie WEEK() ? Die schitteren door afwezigheid...Maar WEEK(NOW()) en WEEK(Gebdatum) geven precies hetzelfde resultaat (14 en 13)
Micha schreef op 04.04.2007 15:15:
Nogmaals:Frank schreef op 04.04.2007 15:13:
met NOW(),2 en Gebdatum,2 krijg ik nog steeds hetzelfde ;)Micha schreef op 04.04.2007 15:06:
En waar zijn jouw parameters voor de functie WEEK() ? Die schitteren door afwezigheid...Maar WEEK(NOW()) en WEEK(Gebdatum) geven precies hetzelfde resultaat (14 en 13)
En waar zijn jouw parameters voor de functie WEEK() ? Die schitteren door afwezigheid...
Frank schreef op 04.04.2007 15:19:
En waar zijn jouw parameters voor de functie WEEK() ? Die schitteren door afwezigheid...
Micha schreef op 04.04.2007 15:15:
Nogmaals:Frank schreef op 04.04.2007 15:13:
met NOW(),2 en Gebdatum,2 krijg ik nog steeds hetzelfde ;)Micha schreef op 04.04.2007 15:06:
En waar zijn jouw parameters voor de functie WEEK() ? Die schitteren door afwezigheid...Maar WEEK(NOW()) en WEEK(Gebdatum) geven precies hetzelfde resultaat (14 en 13)
En waar zijn jouw parameters voor de functie WEEK() ? Die schitteren door afwezigheid...
WEEK(NOW(),2) en WEEK(Gebdatum,2)
CHECK ook mijn post even ajb
Maar wat ik al zei, een verjaardag kan het ene jaar in een andere week vallen dan in het andere jaar. Het ligt er maar aan wanneer week 1 begint.
Robert schreef op 04.04.2007 15:25:
Dan zit ik met de jaartallen..CHECK ook mijn post even ajb
De query wordt dan zo:
SELECT * FROM members WHERE CustomerID=4 AND Gebdatum BETWEEN '2007-04-01' AND '2007-04-07' AND !Deleted ORDER BY Gebdatum
Maar als iemand dan in 1989 geboren is, is het 1989-04-03
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?php
//pak weekdagnummer
$weekday=date('w');
$dagen_tot_zaterdag=6-$weekday;
$zondag = DATE('m-d',mktime(0, 0, 0, date('m'), date('d')-$weekday, date('Y')));
$zaterdag = DATE('m-d',mktime(0, 0, 0, date('m'), date('d')+$dagen_tot_zaterdag, date('Y')));
$query="SELECT id FROM members WHERE DATE_FORMAT('%m-%d',Gebdatum) BETWEEN '".$zondag."' AND '".$zaterdag."'";
?>
//pak weekdagnummer
$weekday=date('w');
$dagen_tot_zaterdag=6-$weekday;
$zondag = DATE('m-d',mktime(0, 0, 0, date('m'), date('d')-$weekday, date('Y')));
$zaterdag = DATE('m-d',mktime(0, 0, 0, date('m'), date('d')+$dagen_tot_zaterdag, date('Y')));
$query="SELECT id FROM members WHERE DATE_FORMAT('%m-%d',Gebdatum) BETWEEN '".$zondag."' AND '".$zaterdag."'";
?>
Dus zoiets, probeer ook zelf even mee te denken, uit eerdere posts leek mij dat je de date_format al kende. (had alleen ff niet aan jaartal gedacht)
Edit:
kan zijn dat dit niet werkt, en dat je de dag en maand apart moet vergelijken
kan zijn dat dit niet werkt, en dat je de dag en maand apart moet vergelijken
Gewijzigd op 01/01/1970 01:00:00 door Robert Deiman