Willkommen in der Webstatt
User-1 am 29.03.07 15:14

Hallo

Auf einer Webseite habe ich einen Counter, der IP und Timestamp einträgt. Dieser Counter dient als Tages-Besucher Counter, ich zähle einfach alle Einträge.

xyz-48n hab ich vor dem Eintragen noch ein Löschquery, der allfällige Einträge von gestern rauschlöschen würde. Das Query sieht so aus:

// Einträge von gestern löschen
mysql_query("DELETE FROM `cntheute` WHERE DATE_FORMAT(`time`, '%e') < DATE_FORMAT(NOW(),'%e')");


Funktioniert eigentlich auch immer, ausser vom 09. auf den 10. eines Monats, und ich glaube den Monatswechsel bewältigt er auch nicht.

Wie muss ich das anpassen dass auch diese Wechsel klappen?


(Ich weiss dass diese Löschvariante nicht gerade sinnvoll ist, die Community hat aber nur etwa 50 xyz-19utzer. Ich werde es aber dann wohl mal mit einem Cronjob ablösen)

danke! so long.
-xyz-169

netcup.de Warum gibt es hier Werbung?
User-2 am 29.03.07 15:22

Das es mit Monaten nicht klappt ist ja klar... Du fragst ja nur den aktuellen Tag ab.

Zwei Vorschläge:

1) Nicht %e als Format sondern der Monatstag OHNE führende 0. Ich befürchte er verpeilt es mit der 0 und interpretiert es dann als String. Aber iegentlich ist das %e...

2) Als zusätzliche Bedingung würde ich einbauen, dass nur die Datensätze mit gleichem Jahr und Monat gelöscht werden. Also:
WHERE ... AND DATE_FORMAT(`time`, '%m%Y') = DATE_FORMAT(NOW(), '%m%Y')

Anmerkung: Das klappt natürlich auch nicht bei dem letzten eines Monats. Hier könnteste du noch zusätzliche alle des gleichen jahres aber kleineren monaten löschen

Die Folge es klappt nicht mehr beim letzten eines Jahres => also auch alle kleneren Jahre löschen.


Komplettt anderer Ansatz:
Du wandelst einfach das datum aktaullerTagMinus1.akuellerMonat.Aktuelles Jahr 00:00:00 in einen Timestamp um und löschst alle kleineren ....

Creative Commons Lizenzvertrag
Alle Inhalte des Webstatt-Archivs stehen unter einer Creative Commons Namensnennung - Weitergabe unter gleichen Bedingungen 3.0 Unported Lizenz.

Impressum & Kontakt