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?
op nonactief zetten is vaak beter
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.
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 :)
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..
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 )
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 ;)
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?
Thx Blanche :)
ToySoldier schreef op 12.07.2008 16:19:
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