Autor | Zpráva | ||
---|---|---|---|
Wordiik Profil * |
#1 · Zasláno: 2. 10. 2009, 17:17:57
Dobrý den, potřebuji poradit s takovou banalitou :-).
Potřebuji vytvořit SQL dotaz, který aktualizuje sloupec "expire" o 1 měsíc. Uživatel bude mít po registraci hodnotu tohoto sloupce 0000-00-00 00:00:00. Tzn.: Pokud si uživatel prodlouží účet o měsíc, aby byla hodnota tohoto sloupce NOW() + interval 1 month ->TO ZVLÁDNU To zvládnu, ale má to jeden háček, když si takto účet aktivuje o 1 měsíc (tzn.: na 2.11.2009), a zítra si ho bude chtít aktivovat o další 1 měsíc, mělo by být datum expirace 2.12.2009, ale datum bude 3.11.2009. Zkoušel jsem tento SQL dotaz, ale nepomohlo: UPDATE `accounts` SET `expire` = `expire` + (NOW()+ INTERVAL 1 month) WHERE `id` = 1; Ovšem pokud je tam hodnota např.: 2009-02-10 17:16:50, pak to aktualizuje na hodnotu 0000-00-00 00:00:00. Pokud je hodnota 0000-00-00 00:00:00, pak to aktualizuje správně. Určitě je tento SQL dotaz chybný, proto prosím, aby jste ho někdo zkontroloval a kdyžtak mi poradil, jak by měl vypadat správně. Snad jsem se vyjádřil jasně, špatně se to popisuje. V případě nejasností, objasním ;-). |
||
denCo Profil |
#2 · Zasláno: 2. 10. 2009, 17:22:26
tak si jednoducho vyber z databazy presne ten cas do kedy ma aktivovany ucet a pridaj k tomu jeden mesiac... popripadne aj minuty a sekundy ked to je take dolezite
|
||
Wordiik Profil * |
#3 · Zasláno: 2. 10. 2009, 17:39:04
denCo
Omlouvám se, ale nechci to dělat takto složitě. Určitě musí existovat řešení, které se vejde do jednoho SQL dotazu. |
||
Perry Profil |
#4 · Zasláno: 2. 10. 2009, 19:12:42
Wordiik:
Nepouzívej 0000-00-00 00:00:00 ale uloz si registraci v UNIX formatu (coz je int cislo) a pak prodlouzeni bude velmi lehke UPDATE `accounts` SET `expire` = `expire` + (86400) WHERE `id` = 1 |
||
Wordiik Profil * |
#5 · Zasláno: 2. 10. 2009, 20:00:11
Funkční řešení, přesně jak jsem potřeboval, jíného diskus. fóra:
UPDATE `accounts` SET `expire` = IF(`expire`<NOW(), DATE_ADD(NOW(), INTERVAL 1 month), DATE_ADD(`expire`, INTERVAL 1 month) ) WHERE `id` = 1; |
||
Časová prodleva: 15 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0