Autor | Zpráva | ||
---|---|---|---|
Matyáš Profil |
Dobrý den,
Potřeboval bych poradit s následujícím: V databázi mám protokol událostí, ze kterého budu cronem, který spustí PHP odstraňovat záznamy starší, než týden. Už jsem něco našel tady ( Datum "před týdnem"), ale nefunguje to. Pro upřesnění, políčko s datem má tento formát: 2014-12-20 10:59:56, což je možná ten problém. Děkuji. |
||
Taps Profil |
#2 · Zasláno: 20. 12. 2014, 14:10:42
Matyáš:
a jak máš poskládaný sql dotaz? |
||
Matyáš Profil |
Takto:
$pred_tydnem = time()-60*60*24*7; mysql_query("DELETE FROM protokol_udalosti WHERE datum <= '".$pred_tydnem."'"); |
||
Taps Profil |
#4 · Zasláno: 20. 12. 2014, 14:29:44
Matyáš:
zkus mysql_query("DELETE FROM protokol_udalosti WHERE DATE_FORMAT(datum,'%Y-%m-%d') <= '".$pred_tydnem."'"); |
||
Joker Profil |
#5 · Zasláno: 20. 12. 2014, 14:30:04
Matyáš:
„Pro upřesnění, políčko s datem má tento formát“ Jestli má správný datový typ (DATETIME), formát není rozhodující. Jinak, je nutné ty záznamy z databáze mazat? Nestačilo by při výběru prostě vybírat záznamy za poslední týden? |
||
Matyáš Profil |
Taps:
„mysql_query("DELETE FROM protokol_udalosti WHERE DATE_FORMAT(datum,'%Y-%m-%d') <= '".$pred_tydnem."'");“ Bohužel, toto nefunguje. Není to tím, že v proměnné $pred_tydnem je např. takovéto číslo?: 1418579344
Joker: „Jinak, je nutné ty záznamy z databáze mazat? Nestačilo by při výběru prostě vybírat záznamy za poslední týden?“ Problém je v tom, že mám freehosting a jenom 30MB databáze. Časem by se to mohlo zaplnit. Chci to mít pokud možno bezúdržbové. Stejně by byl problém se zobrazením dat starších než týden. Jen by byl jiný SQL dotaz. |
||
Taps Profil |
#7 · Zasláno: 21. 12. 2014, 19:08:59
Matyáš:
oprava mysql_query("DELETE FROM protokol_udalosti WHERE UNIX_TIMESTAMP(datum) <= '".$pred_tydnem."'"); |
||
Matyáš Profil |
#8 · Zasláno: 21. 12. 2014, 20:00:12
Výborně! Toto funguje. Chápu to dobře, že
UNIX_TIMESTAMP převádí datum na absolutní čas v sekundách?
Děkuji všem za rady! |
||
Časová prodleva: 9 let
|
0