Autor Zpráva
Wordiik
Profil *
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
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 *
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
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
; //prodlouzi o jeden den
Wordiik
Profil *
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;
Toto téma je uzamčeno. Odpověď nelze zaslat.