[PHP/MySQL] selecteren datums in de toekomst

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Het volgende is het probleem, na enig zoekwerk kom ik er nog steeds niet helemaal uit (php newbie...) :

Ik heb een tabel met datums en ik wil hieruit alle datums selecteren die vanaf 5 dagen na nu komen.

De volgende syntax heb ik hier nu voor gemaakt, maar dit werkt niet in mijn PHP pagina met een MySQL database (in ASP met Access db werkt het trouwens wel :( )
Ik heb geen idee hoe dit in de SQL query op te lossen (ik wil dit liever meteen in de SQL query dan in PHP code uitvoeren)

code:
1
mysql_query("SELECT * FROM trainingData WHERE datum >= now() + 5;") or die ("foutmelding");


het "datum" veld is van het type "DATE" (dus yyyy-mm-dd)

Acties:
  • 0 Henk 'm!

Verwijderd

Als ik met datums en tijden moet gaan rekenen, wat je hier probeert te doen, dan werk ik doorgaans liever met een veld in de tabel wat seconds since epoch (date("U"); in php) bevat voor een datum. Dat kun je dan met date() en mktime() weer heel makkelijk omrekeningen en manipuleren, want het enige wat je doet is rekenen met een getal.

als je vervolgens met 5 dagen in de toekomst wilt gaan werken, doe je gewoon (date("U") + (3600 * 24 * 5 )) gebruiken. (3600 is het aantal seconden in een uur).

[ Voor 4% gewijzigd door Verwijderd op 21-09-2004 12:31 . Reden: tiepvoutjes ]


Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

Nee, niet PHP, MySQL: http://dev.mysql.com/doc/...e_and_time_functions.html

Zoek in die pagina eens op het woordje ADD, en probeer eruit te komen zonder PHP te gebruiken (in phpMyAdmin of op de mysql console ofzo). D'r wordt altijd maar naar PHP gegrepen, terwijl de oplossing veel eenvoudiger in (My)SQL te vinden is.

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
het is gelukt met adddate(now(), INTERVAL 5 DAY)

Acties:
  • 0 Henk 'm!

  • BrZ
  • Registratie: Maart 2000
  • Laatst online: 00:22

BrZ

Verwijderd schreef op 21 september 2004 @ 12:30:
Als ik met datums en tijden moet gaan rekenen, wat je hier probeert te doen, dan werk ik doorgaans liever met een veld in de tabel wat seconds since epoch (date("U"); in php) bevat voor een datum. Dat kun je dan met date() en mktime() weer heel makkelijk omrekeningen en manipuleren, want het enige wat je doet is rekenen met een getal.

als je vervolgens met 5 dagen in de toekomst wilt gaan werken, doe je gewoon (date("U") + (3600 * 24 * 5 )) gebruiken. (3600 is het aantal seconden in een uur).
En ga nu eens alles van vandaag opvragen... Dan kan moet je dus met mktime de timestamp van 0:00 en 0:00 van de volgende dag maken, en dan met between hierop gaan selecten. Niet echt handig ;)

En met jouw manier hou je bv ook geen rekening met zomer en wintertijd, dan klopt je 3600*24 dus niet (alhoewel dat in het geval van 5 dagen niet zo heel veel uit maakt)

[ Voor 12% gewijzigd door BrZ op 21-09-2004 16:03 ]