Datum serverpakken
Hallo,
Ik had de volgende vraag is er een methode waarmee je vanaf de server kan bepalen in je query dat die bijv. de datum van vandaag tot volgende maand pakt en dat natuurlijk elke dag 1 dag opschuift.
Voorbeeld:
$query = "SELECT * FROM klanten WHERE einddatum = datum van server +30 dagen bijv.
Groet,
Kees
Ik had de volgende vraag is er een methode waarmee je vanaf de server kan bepalen in je query dat die bijv. de datum van vandaag tot volgende maand pakt en dat natuurlijk elke dag 1 dag opschuift.
Voorbeeld:
$query = "SELECT * FROM klanten WHERE einddatum = datum van server +30 dagen bijv.
Groet,
Kees
CURDATE()
Dank je wel voor je reactie alleen hoe zeg ik dan nu dat die bijv. 10 dagen vooruit van de datums ook pakt?
Weet het niet zeker, ma probeer eens.
INTERVAL 10 DAYS
INTERVAL 10 DAYS
ik heb even gezocht, maar volgens verschillende sites moet dit de juiste code er voor zijn:
DATE_ADD(CURDATE(), INTERVAL 10 DAY)
Alleen als ik dit doe krijg ik geen resultaat en ook geen foutmelding
DATE_ADD(CURDATE(), INTERVAL 10 DAY)
Alleen als ik dit doe krijg ik geen resultaat en ook geen foutmelding
Wat is nu je totale statement en wat wil je specifiek bereiken?
Probeer deze eens.
NIET GETEST
NIET GETEST
Hoe ik het wel werkend krijg. Dat als in de db de datum 2011-12-22 maar ook 2011-12-23, 2011-12-26 en 2012-01-10 hebt staan. Ik de query uitvoert voor de select. Dat die dus 10 dagen laat zien en de rest niet.
Dus dat je 2011-12-22, 2011-12-23, 2011-12-26 ziet, maar 2012-01-10 niet.
Hoop dat je het zo snapt?
Dus dat je 2011-12-22, 2011-12-23, 2011-12-26 ziet, maar 2012-01-10 niet.
Hoop dat je het zo snapt?
Welke query voer je dan uit?
En hoe zit je database er uit. Want als je naar datum vandaag kijkt 22-12 en je doet een interval +10 days dan zou je alle results moeten zien tot 01-01-2012.
En hoe zit je database er uit. Want als je naar datum vandaag kijkt 22-12 en je doet een interval +10 days dan zou je alle results moeten zien tot 01-01-2012.
Nogmaals, wat is de query die je nu probeert. Op basis daarvan kunnen we dan kijken wat er mis gaat. Anders is het een beetje in het wilde weg schieten.
Dit is me query:
SELECT klanten.*, orders.* FROM klanten LEFT JOIN orders ON (klanten.idklant = orders.klantid )WHERE orders.bvid = '".$_GET['bv']."' AND orders.einddatum > CURDATE() + INTERVAL 30 DAY ORDER BY orders.einddatum ASC
In me database staat gewoon 2011-12-22 2011-12-23 enz.
SELECT klanten.*, orders.* FROM klanten LEFT JOIN orders ON (klanten.idklant = orders.klantid )WHERE orders.bvid = '".$_GET['bv']."' AND orders.einddatum > CURDATE() + INTERVAL 30 DAY ORDER BY orders.einddatum ASC
In me database staat gewoon 2011-12-22 2011-12-23 enz.
orders.einddatum > CURDATE() + INTERVAL 30 DAY
Hiermee zeg je dus dat alle records waarvan de datum hoger is dan vandaag +30 dagen dat die geselecteerd moeten worden.... lijk me niet wat je wil...
Je wil als ik het goed begrijp alle einddata tussen vandaag en 10 of 30 dagen van nu hebben. Dan heb je dus zoiets nodig:
orders.einddatum BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 10 DAY)
(plus natuurlijk de rest van je SQL statement)
De notatie die Frank gaf ken ik niet en werkt volgens mij niet, maar 100% zeker weet ik dat ook niet. Bovenstaande zou wel moeten werken.
Hiermee zeg je dus dat alle records waarvan de datum hoger is dan vandaag +30 dagen dat die geselecteerd moeten worden.... lijk me niet wat je wil...
Je wil als ik het goed begrijp alle einddata tussen vandaag en 10 of 30 dagen van nu hebben. Dan heb je dus zoiets nodig:
orders.einddatum BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 10 DAY)
(plus natuurlijk de rest van je SQL statement)
De notatie die Frank gaf ken ik niet en werkt volgens mij niet, maar 100% zeker weet ik dat ook niet. Bovenstaande zou wel moeten werken.
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
SELECT klanten.*, orders.*
# beter geen wildcard gebruiken maar de velden selecteren die je nodig hebt
FROM klanten
LEFT JOIN orders ON klanten.idklant = orders.klantid
WHERE orders.bvid = '".$_GET['bv']."' AND orders.einddatum BETWEEN
CURDATE() AND
DATE_ADD(CURDATE(), INTERVAL 30 DAY)
ORDER BY orders.einddatum ASC
# beter geen wildcard gebruiken maar de velden selecteren die je nodig hebt
FROM klanten
LEFT JOIN orders ON klanten.idklant = orders.klantid
WHERE orders.bvid = '".$_GET['bv']."' AND orders.einddatum BETWEEN
CURDATE() AND
DATE_ADD(CURDATE(), INTERVAL 30 DAY)
ORDER BY orders.einddatum ASC
je gebruikte groter dan dus dat selecteerd alles na 21 januari 2012
Toevoeging op 22/12/2011 17:05:24:
Erwin was me al voor ;)
Gewijzigd op 22/12/2011 17:08:49 door Ger van Steenderen
Erwin H op 22/12/2011 16:59:24:
orders.einddatum > CURDATE() + INTERVAL 30 DAY
Hiermee zeg je dus dat alle records waarvan de datum hoger is dan vandaag +30 dagen dat die geselecteerd moeten worden.... lijk me niet wat je wil...
Je wil als ik het goed begrijp alle einddata tussen vandaag en 10 of 30 dagen van nu hebben. Dan heb je dus zoiets nodig:
orders.einddatum BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 10 DAY)
(plus natuurlijk de rest van je SQL statement)
De notatie die Frank gaf ken ik niet en werkt volgens mij niet, maar 100% zeker weet ik dat ook niet. Bovenstaande zou wel moeten werken.
Hiermee zeg je dus dat alle records waarvan de datum hoger is dan vandaag +30 dagen dat die geselecteerd moeten worden.... lijk me niet wat je wil...
Je wil als ik het goed begrijp alle einddata tussen vandaag en 10 of 30 dagen van nu hebben. Dan heb je dus zoiets nodig:
orders.einddatum BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 10 DAY)
(plus natuurlijk de rest van je SQL statement)
De notatie die Frank gaf ken ik niet en werkt volgens mij niet, maar 100% zeker weet ik dat ook niet. Bovenstaande zou wel moeten werken.
A oke BETWEEN moest er dus nog bij.
Bij mijn notatie vermelde ik ook dat het niet getest was, en was ook meer al mee denken bedoelt.
Over testen gesproken, een tip in het algemeen:
Zorg dat je een goede DB manager hebt warmee je direct SQL statements kan uitvoeren, test eerst daar de sql voordat je hem toepast in een PHP script.
Zorg dat je een goede DB manager hebt warmee je direct SQL statements kan uitvoeren, test eerst daar de sql voordat je hem toepast in een PHP script.
Gewijzigd op 22/12/2011 17:34:48 door Ger van Steenderen
Dank jullie wel voor jullie reacties en tips het werkt nu helemaal




