Hulp bij query
Ik ben bezig met een script wat logs opslaat, maar nu heb ik een query nodig die logs verwijderd die van 2 dagen terug of ouder zijn. Ik gebruik in SQL het datetime veld, genaamd 'datum'. Welke query moet ik hiervoor gebruiken?
waarom verwijderen als ik vragen mag? zit het je in de weg?
op nonactief zetten is vaak beter
op nonactief zetten is vaak beter
offtopic:
wat is het nut van verwijderen? De database zit niet zo heel snel vol, tenzij je echt een halve gigabyte aan tekst per dag logt..
of wat is het nu van loggen in zo'n korte tijd? Als je iets zo snel weggooit, heeft het loggen toch geen zin?
wat is het nut van verwijderen? De database zit niet zo heel snel vol, tenzij je echt een halve gigabyte aan tekst per dag logt..
of wat is het nu van loggen in zo'n korte tijd? Als je iets zo snel weggooit, heeft het loggen toch geen zin?
Gewijzigd op 01/01/1970 01:00:00 door Terence Hersbach
Ik log elk bezoek maar bezoek aan 'standaard' paginas (zoals een gebruikerslijst of een pagina waar je geen dingen echt kunt veranderen) zijn na een tijdje niet meer nuttig. Die wil ik dan eruit gooien maar ik weet niet hoe je ze van een bepaalde periode pakt.
Kijk hier eens, overigens is weggooien bijna nooit nodig
http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html
http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html
En hier een pagina vol met andere leuke datetime functies van MySQL: http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html
Ik zou de gegevens overigens bewaren. Is het niet om achteraf misbruik op te sporen, dan is het wel om in de toekomst statistieken uit te halen. Als je het gebruikers-id, de pagina en de datum en tijd van het moment van opvragen opslaat kan je al een redelijk goed overzicht krijgen van de paden die mensen op je website doorlopen. Kan je later weer gebruiken om knelpunten te vinden en je site te verbeteren. En het is gewoon interessant :)
Via Klaasjans link gevonden, DATE_SUB moest ik hebben :)
Bedankt!
@ Jelmar: Ja maar je moet de logs ook kunnen bekijken. Na een tijdje vreet dat erg veel aan mijn database ben ik bang.. :o
Bedankt!
@ Jelmar: Ja maar je moet de logs ook kunnen bekijken. Na een tijdje vreet dat erg veel aan mijn database ben ik bang.. :o
Gewijzigd op 01/01/1970 01:00:00 door ToySoldier ZegIkNiet
@ToySoldier, geloof me, jouw database zal nooit vollopen. Ook niet als je hem voor de rest van je leven niet leeggooit.
Het zal wel een stuk langzamer worden..
zelfs dat niet..
Nu krijg ik een MySQL fout..
Ik krijg een mysql syntax error (#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE DATE_SUB(CURDATE(),INTERVAL 14 DAY) <= datum LIMIT 0,15' at line 1 )
(Ik ben nu de code die hier eerder gepost werd aan het proberen)
Code (php)
1
SELECT * FROM ht_logs ORDER BY datum DESC WHERE DATE_SUB(CURDATE(),INTERVAL 14 DAY) <= datum LIMIT 0,15
Ik krijg een mysql syntax error (#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE DATE_SUB(CURDATE(),INTERVAL 14 DAY) <= datum LIMIT 0,15' at line 1 )
(Ik ben nu de code die hier eerder gepost werd aan het proberen)
Gewijzigd op 01/01/1970 01:00:00 door ToySoldier ZegIkNiet
Weet iemand hoe ik dit oplos? Ik heb een variable $wk die ik vermenigvuldig met 7, wat het aantal dagen oplevert. Ik wil de resultaten van die afgelopen X dagen ophalen.. Hoe? (De variable heet $days )
WHERE ORDER LIMIT OFFSET
die volgorde moet je aanhouden
die volgorde moet je aanhouden
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
SELECT
*
FROM
ht_logs
WHERE
DATE_SUB(CURDATE(),INTERVAL $days DAY) <= datum
ORDER BY
datum DESC
LIMIT 0,15
*
FROM
ht_logs
WHERE
DATE_SUB(CURDATE(),INTERVAL $days DAY) <= datum
ORDER BY
datum DESC
LIMIT 0,15
Order by komt na where ;)
edit: Woeps, Terence was me weer voor
Gewijzigd op 01/01/1970 01:00:00 door Jelmer -
Sorry voor 't bumpen & bedankt voor het antwoord ;)
En dan mag je DATE_SUB() ook nog even vervangen door een simpele -. Veel eenvoudiger, veel duidelijker:
Nieuw probleem, nieuwe post.
Ik heb bij de dev.mysql.com link gezocht, maar ik kwam er echt niet meer uit hoe dit kan:
Ik moet het verschil in dagen hebben van 2 datetime velden in MySQL. Veld 1 (verbannen_op) is de startdatum. Veld 2 (verbannen_tot) is de einddatum. Nu ben ik er wel al uit dat veld 2 - veld 1 of iets dergelijks is maar ik ken de MySQL codes hiervoor niet.. Iemand?
Ik heb bij de dev.mysql.com link gezocht, maar ik kwam er echt niet meer uit hoe dit kan:
Ik moet het verschil in dagen hebben van 2 datetime velden in MySQL. Veld 1 (verbannen_op) is de startdatum. Veld 2 (verbannen_tot) is de einddatum. Nu ben ik er wel al uit dat veld 2 - veld 1 of iets dergelijks is maar ik ken de MySQL codes hiervoor niet.. Iemand?
Love MySQL :D
Thx Blanche :)
Thx Blanche :)
'ToySoldier:
Zeg dat maar niet te snel. In elke andere goede database is het namelijk wel gewoon mogelijk om 2 data van elkaar af te trekken met behulp van het - teken. Daar hoef je geen gebruik te maken van zo'n functie als DATEDIFF(), sterker nog zo'n functie bestaat niet eens!Love MySQL :D





