Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL]Usuwanie rekordów, gdy upłynął dany czas
Szymad
post
Post #1





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 1.12.2011

Ostrzeżenie: (0%)
-----


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

Ten post edytował Szymad 1.12.2012, 21:23:59
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
tab
post
Post #2





Grupa: Zarejestrowani
Postów: 75
Pomógł: 20
Dołączył: 8.10.2012

Ostrzeżenie: (0%)
-----


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

Ten post edytował tab 1.12.2012, 21:35:53
Go to the top of the page
+Quote Post
thek
post
Post #3





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




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.


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
Szymad
post
Post #4





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 1.12.2011

Ostrzeżenie: (0%)
-----


  1. DELETE FROM promotes WHERE datestart < DATE_SUB(NOW(), INTERVAL 1 MONTH)


zrób tak, żeby interwał był brany od kolumny DAYS, proszę
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 15:22