[php/mysql] datum terugreken vraag!

Pagina: 1
Acties:

  • source
  • Registratie: Januari 2000
  • Laatst online: 05-06 11:53
mijn vraag is hetvolgende:

Ik wil op een site, dat hij lijsten laat zien die zijn ingeleverd van vandaag t/m een week geleden, hij schrijft de datum als volgt in de database, bv 12-01-2002.

Ik wil dus dat ik met een functie alles van 05-12-2002 t/m 12-01-2002 kan opvragen...

HOE krijg ik die datum tevoorschijn van een week geleden????

PLIEZ help

Diplomacy is the ability to tell a person to go to hell in such a nice way that he looks forward to the trip.


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

in geval mysql: date_sub opzoeken in de manual...

  • source
  • Registratie: Januari 2000
  • Laatst online: 05-06 11:53
wat bedoel je?

het is toch waarschijnlijk een functie in php?

Diplomacy is the ability to tell a person to go to hell in such a nice way that he looks forward to the trip.


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Op zaterdag 26 januari 2002 12:18 schreef source het volgende:
het is toch waarschijnlijk een functie in php?
Euh, ik had even niet op je topictitel gelet ;)

date_sub is een mysql functie, je wilt toch die gegevens uit je database halen? ;)

Verwijderd

Je hebt hopelijk in je tabel een timestamp staan ofzo.. maak een select: "select watjewilt from tabel where week(timestamp) = week(curdate())-1 or week(timestamp) = week(curdate())"

  • source
  • Registratie: Januari 2000
  • Laatst online: 05-06 11:53
ik had een beetje te grote bek, ik heb het gevonden:

voor anderen die hiermee zitten, hier is de code:

$tomorrow = mktime (0,0,0,date("m") ,date("d")+1,date("Y"));
$lastmonth = mktime (0,0,0,date("m")-1,date("d"), date("Y"));
$nextyear = mktime (0,0,0,date("m"), date("d"), date("Y")+1);

Diplomacy is the ability to tell a person to go to hell in such a nice way that he looks forward to the trip.


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Op zaterdag 26 januari 2002 12:22 schreef source het volgende:
ik had een beetje te grote bek, ik heb het gevonden:

voor anderen die hiermee zitten, hier is de code:
Imho is dat niet de mooiste manier om het uit je database te halen...

Wat dacht je van:
code:
1
SELECT * FROM je_tabel WHERE datumveld BETWEEN DATE_SUB(NOW(), INTERVAL 7 DAY) AND NOW()

  • source
  • Registratie: Januari 2000
  • Laatst online: 05-06 11:53
hmmmz... ken deze functie niet...

dit ga ik proberen. is dit een letterlijke query?

Diplomacy is the ability to tell a person to go to hell in such a nice way that he looks forward to the trip.


Verwijderd

Op zaterdag 26 januari 2002 12:31 schreef ACM het volgende:

[..]

Imho is dat niet de mooiste manier om het uit je database te halen...

Wat dacht je van:
code:
1
SELECT * FROM je_tabel WHERE datumveld BETWEEN DATE_SUB(NOW(), INTERVAL 7 DAY) AND NOW()
Mijn idee.. kwist alleen niet goed hoe between werkt...

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Op zaterdag 26 januari 2002 12:34 schreef source het volgende:
hmmmz... ken deze functie niet...

dit ga ik proberen. is dit een letterlijke query?
Sja, behalve dat je waarschijnlijk geen 'je_tabel' hebt en je tabellen geen velden 'datumveld' hebben? :)

Verder is ie goed geloof ik, niet dat ik hem getest heb...

  • source
  • Registratie: Januari 2000
  • Laatst online: 05-06 11:53
kan 't maandag pas testen, en thuis heb ik ff geen inet, aardig lastig...

maar ik neem 't mee... tnx!

Diplomacy is the ability to tell a person to go to hell in such a nice way that he looks forward to the trip.


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 12-09 21:31

Janoz

Moderator Devschuur®

!litemod

Die code gaat er trouwens wel vanuit dat je je datum in de db ook echt als datum heb gedefinieerd, en niet als varchar. Als jij je datum in een varchar hebt staan moet je nu snel naar de dichtsbijzijnde hoek rennen en daar ff een half uurtje blijven staan en jezelf schamen :+... Het type datum is niet voor niks :)

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • source
  • Registratie: Januari 2000
  • Laatst online: 05-06 11:53
ik snap het... hoef me verder niet te schamen :)

Diplomacy is the ability to tell a person to go to hell in such a nice way that he looks forward to the trip.


  • vinnux
  • Registratie: Maart 2001
  • Niet online
Let op de verschillen :
code:
1
SELECT * FROM je_tabel WHERE datumveld BETWEEN DATE_SUB(NOW(), INTERVAL 7 DAY) AND NOW()

&&
code:
1
SELECT * FROM database WHERE TO_DAYS(datumveld) - TO_DAYS(NOW()) > -7

De bovenste haalt alles op van 7*24 uur geleden op.
Dus als je op de helft van de dag zit haalt ie ook alle maar op tot 7*24 uur geleden.

Onderstaande query haalt alles op wat niet ouder is dan 7 dagen, in units van 1 dag. Dus als het nu het einde van de dag is, haalt deze query wel alles op van 7 dagen geleden.

Het verschil geld alleen wanneer je DATETIME of TIMESTAMP velden gebruikt. Maar dat leek me logisch.

Als je in PHP de datum van 7 dagen geleden wilt doe je dat :
PHP:
1
2
3
4
<?
$dayInSeconds = 60*60*24;
$dateSevenDaysAgo =date(time()-7*$dayInSeconds,'d-m-Y');
?>
Pagina: 1