Kalender (Selecteren op binnenkort jarig)
De datum van verjaardag wordt in de database opgeslagen als bijvoorbeeld: 05-01 of 23-11. Ik wil deze gegevens uitlezen en de string omzetten naar tekst. Dus dan bedoel ik dat bijvoorbeeld '23-11' wordt omgezet naar '23 november'.
Wat ik nu heb? Helemaal niks. Ik weet niet hoe ik hieraan moet beginnen en hoe dit het makkelijkst aan te pakken. Iemand die mij op weg kan helpen?
Bedankt Jasper, fijne tutorial. Maar hoe kan ik dan kijken welke datum het dichts bij de huidige datum komt? Is daar een SQL functie voor zoals bijvoorbeeld LIKE?
Toevoeging op 21/04/2011 18:00:11:
Of bedoel je bij een specifieke datum? Dan kan je is kijken naar WHERE en wat datumfuncties binnen MySQL
Write Down, thanks. Bestaat er niet gewoon iets WHERE NEAR BY of iets dergelijks? Dit probleem moeten mensen toch wel vaker tegen zijn gekomen? Nouja probleem, omslachtig.
Ik bump dit topic even, met de hoop dat iemand mij kan helpen.
Je moet de datum casten naar een DATE en dan iets doen met INTERVAL
PHP Scripter op 21/04/2011 17:32:21:
Bedankt Jasper, fijne tutorial. Maar hoe kan ik dan kijken welke datum het dichts bij de huidige datum komt? Is daar een SQL functie voor zoals bijvoorbeeld LIKE?
Uit de losse pols (dus niet getest):
SELECT id FROM gebruikers WHERE EXTRACT(MONTH_DAY FROM geboortedatum) > EXTRACT(MONTH_DAY FROM CURDATE()) ORDER BY EXTRACT(MONTH_DAY FROM geboortedatum) ASC LIMIT 5
Bij grote hoeveelheid data kan dit wellicht performance verlies optreden aangezien voor elke rij een aantal bewerkingen uitgevoerd moeten worden om vervolgens te controleren op de voorwaarde.
Noppes Homeland op 24/04/2011 18:39:34:
Wel zolang jij niet weet aan te geven wat jij bedoelt met "Selecteren op binnenkort jarig" kan je wachten totdat je een osn weegt.
Je moet de datum casten naar een DATE en dan iets doen met INTERVAL
Je moet de datum casten naar een DATE en dan iets doen met INTERVAL
Met een interval zal het niet gaan lukken, aangezien je niet weet hoe groot de interval moet zijn. Twee data (datums) kunnen zeer ver uit of dichtbij elkaar liggen
Gewijzigd op 24/04/2011 20:38:59 door Arjan -
de "datum" is opgeslagen als dd-mm dus is VARCHAR, daar kan je dus geen datunm tijd functies overheen halen zonder het naar dat type te casten
en de vraag is: "binnenkort jarig" wat versta ja in vredesnaam onder binnenkort, dus je fiets er nu gewoon met een hele grote aanname doorheen, dat jouw query oki doki is. Het resultaat wat je met jouw query verkrijgt slaat echt nergens op.
Dus TS wat versta je onder "binnenkort".....
Noppes Homeland op 24/04/2011 21:12:23:
@Arjan, leer lezen
de "datum" is opgeslagen als dd-mm dus is VARCHAR, daar kan je dus geen datunm tijd functies overheen halen zonder het naar dat type te casten
en de vraag is: "binnenkort jarig" wat versta ja in vredesnaam onder binnenkort, dus je fiets er nu gewoon met een hele grote aanname doorheen, dat jouw query oki doki is. Het resultaat wat je met jouw query verkrijgt slaat echt nergens op.
Dus TS wat versta je onder "binnenkort".....
de "datum" is opgeslagen als dd-mm dus is VARCHAR, daar kan je dus geen datunm tijd functies overheen halen zonder het naar dat type te casten
en de vraag is: "binnenkort jarig" wat versta ja in vredesnaam onder binnenkort, dus je fiets er nu gewoon met een hele grote aanname doorheen, dat jouw query oki doki is. Het resultaat wat je met jouw query verkrijgt slaat echt nergens op.
Dus TS wat versta je onder "binnenkort".....
Je wordt nu zo onderhand vrij irritant met jouw benadering! Hieronder zal je duidelijk worden dat jij wellicht naar de opticiën moet.
PHP Scripter op 21/04/2011 17:32:21:
Bedankt Jasper, fijne tutorial. Maar hoe kan ik dan kijken welke datum het dichts bij de huidige datum komt? Is daar een SQL functie voor zoals bijvoorbeeld LIKE?
Het woordje "dan" refereert naar de post van PHP Jasper die uitlegt dat je het beter in een date veld kan opslaan. Dus de topicstarter geeft aan deze methode te willen gebruiken en vraagt hoe je dan de dichtstbijzijnde datums kan krijgen (oftewel hij wil dus via deze methode de 5 meest recente verjaardagen opvragen zoals hij in de eerste post laat weten).
Met mijn query zal je door het extracten van de maand en dag uit een "date" veld de eerst volgende verjaardagen kunnen halen (immers heeft het jaartal niets te maken met wanneer iemand jarig is (alleen hoe oude diegene wordt)).
Quote:
Het resultaat wat je met jouw query verkrijgt slaat echt nergens op.
Welke resultaten krijg je dan denk je met mijn query. Probeer het eens uit zal ik zeggen (ik heb het namelijk niet zelf uitgeprobeerd zoals ik al heb vermeld, maar ik heb een aanzet gedaan).
Dus kortweg: lees alles nogmaals door voordat je iemand op deze manier benadert of zeg gewoon niets!!
Een andere mogelijkheid om de eerstvolgende verjaardagen op te vragen is het verschil in dagen tussen de huidige datum (maand en dag) en de geboortedata (maand en dag) te gebruiken. Deze verschillen kan je sorteren en zodoende de eerstvolgende verjaardagen opvragen (met een eventuele limiet).
Gewijzigd op 24/04/2011 22:02:16 door Arjan -
http://www.google.nl/#hl=nl&biw=1600&bih=799&sa=X&ei=RC-1TbzwF8KcOvuskfYI&ved=0CDoQBSgA&q=date+less+than&spell=1&fp=28e20c54a5ce2fff
Dar zit vast wel wat tussen, vervolgens wat array handelingen en ik denk dat je hem wel an het praten krijgt. Sorry, maar verder in details kan ik even niet gaan maar het lijkt me dat je voor nu genoeg hebt ;3