MySQL: TIMESTAMP namiesto DATETIME pri ukladani datumov

Programovacie jazyky, rady, poradňa...
Holubar
Darca
Darca
Používateľov profilový obrázok
Príspevky: 3894
Registrovaný: 24 feb 2005, 21:26
Bydlisko: Senec
Kontaktovať používateľa:

MySQL: TIMESTAMP namiesto DATETIME pri ukladani datumov

Príspevok od používateľa Holubar »

Mam taku dilemu. V knhe o optimalizacii MySQL som cital, ze TIMESTAMP zaberie zhruba polovicu prostriedkov oproti formatu DATETIME pri ukladani datumu a csu v databaze. To sa hodi napr pri prispevkoch vo fore, ktorych sa casom nazbiera dost a vtedy sa uz da hovorit o optimalizacii.
Ale o TIMESTAMP mam trochu skreslene predstavy, nieco som googlil a mam chaos v tom, ake je pouzitie.

Chcem hlavne vediet, ako je to s aktualizaciou zaznamu vo formate TIMESTAMP. Nie je to tak, ze ked menim v danom riadku akykolvek udaj, zmeni sa v tom riadku automaticky aj TIMESTAMP na aktualnu hodnotu? Logicky by nemalo, ak to explicitne nie je v prikaze, ale chcem sa uistit, kym zacnem prepisovat zdrojaky na tvorbu tabuliek.
pheo
Light Star
Light Star
Používateľov profilový obrázok
Príspevky: 212
Registrovaný: 20 sep 2005, 16:53
Bydlisko: moje hniezdo
Kontaktovať používateľa:

Re: MySQL: TIMESTAMP namiesto DATETIME pri ukladani datumov

Príspevok od používateľa pheo »

JA si myslím že tie timestap sa nezmenia pri update, inak nic nedas ak si to odskusas na nejakej stupidnej tabulke o dvoch, troch stlpcoch
__construct
Medium Expert
Medium Expert
Používateľov profilový obrázok
Príspevky: 108
Registrovaný: 23 sep 2009, 9:32
Bydlisko: Dark Side of The Moon
Kontaktovať používateľa:

Re: MySQL: TIMESTAMP namiesto DATETIME pri ukladani datumov

Príspevok od používateľa __construct »

Pokiaľ tam nedáš toto:

Kód: Vybrať všetko

..TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP..
tak sa ti to po update samo neaktualizuje ..

Čo sa týka toho DATETIME (ja používam to):
Ak chceš použiť DATETIME tak jednoducho dám pri INSERTE aktuálny čas cez funkciu NOW()..
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: MySQL: TIMESTAMP namiesto DATETIME pri ukladani datumov

Príspevok od používateľa audiotrack »

Timestamps in MySQL generally used to track changes to records, and are updated every time the record is changed. If you want to store a specific value you should use a datetime field.

If you meant that you want to decide between using a UNIX timestamp or a native MySQL datetime field, go with the native format. You can do calculations within MySQL that way ("SELECT DATE_ADD(my_datetime, INTERVAL 1 DAY)") and it is simple to change the format of the value to a UNIX timestamp ("SELECT UNIX_TIMESTAMP(my_datetime)") when you query the record if you want to operate on it with PHP.
http://stackoverflow.com/questions/4092 ... -timestamp
pheo
Light Star
Light Star
Používateľov profilový obrázok
Príspevky: 212
Registrovaný: 20 sep 2005, 16:53
Bydlisko: moje hniezdo
Kontaktovať používateľa:

Re: MySQL: TIMESTAMP namiesto DATETIME pri ukladani datumov

Príspevok od používateľa pheo »

no zas som sa nieco naucil :)
toto je docela metúca vlastnosť mysql, kedže na podobné srandy väčšinou slúžia aktívne prvky = trigger
__construct
Medium Expert
Medium Expert
Používateľov profilový obrázok
Príspevky: 108
Registrovaný: 23 sep 2009, 9:32
Bydlisko: Dark Side of The Moon
Kontaktovať používateľa:

Re: MySQL: TIMESTAMP namiesto DATETIME pri ukladani datumov

Príspevok od používateľa __construct »

STACKOVERFLOW SUX

Kód: Vybrať všetko

http://dev.mysql.com/doc/refman/5.1/en/timestamp.html
With a DEFAULT CURRENT_TIMESTAMP clause and no ON UPDATE clause, the column has the current timestamp for its default value but is not automatically updated.
Napísať odpoveď