Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL]Usuwanie rekordów, gdy upłynął dany czas
Forum PHP.pl > Forum > Przedszkole
Szymad
Cześć,

to przedszkole, więc piszę tu. Nie śmiejcie się ze mnie, bo jeszcze wpadnę w depresję i popełnię samobójstwo. biggrin.gif

Koniec żartów. Tabela ma taką budowę (nazywa się `promotes`):
ID - int
INFO - text
DAYS - int
DATESTART - date

Nom. Chodzi mi o utworzenie zapytania jak najbardziej opytmalnego, który usunie dany rekord po upłynięciu liczby dni podanych w DAYS od DATESTART.

Nie znam się za bardzo na SQL, ale czytałem, że samym SQL się take coś zrobi, bez udziału PHP. smile.gif
tab
No wiec przykładowo jak chcesz usunac wszystkie posty starsze niz miesiac:
  1. DELETE FROM promotes WHERE datestart < DATE_SUB(NOW(), INTERVAL 1 MONTH)

Czyli sprawdzamy czy datestart jest starszy od roznicy sekund do teraz i sekund do chwili ktora byla miesiac temu (czyli po prostu czy wpis jest starszy niz miesiac). Do tego sluzy funkcja mysql DATE_SUB. A co do usuwania to mozesz albo to odpalac przy kazdym odczytywaniu/dodawaniu rekordow do bazy, albo (optymalniej) zlecic to zadanie cron'owi ktory bedzie sie wlaczał co miesiac i usuwał stare rekordy
thek
Można też skorzystać z eventów, które zadziałają podobnie jak cron. Eventy jednak na wielu hostingach nie są userom dawane "do rąk" i stąd cron jest rozwiązaniem pewniejszym i powszechniejszym w stosowaniu.
Szymad
  1. DELETE FROM promotes WHERE datestart < DATE_SUB(NOW(), INTERVAL 1 MONTH)


zrób tak, żeby interwał był brany od kolumny DAYS, proszę
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.