ugrás a tartalomhoz

MySQL: datetime vs. unix timestamp

Anonymous · 2006. Jún. 1. (Cs), 20.21
Szerintetek hogyan érdemes eltárolni a dátumot MySQL-ben?
Én a timestamp-re szavazok, szerintem így könnyebb a dátumokkal lekérdezéseket végezni, valamint ha másféle formában akarom kiírni az oldalra, akkor nem kell előtte strtotime-al átalakítani.
Szóval melyik megoldás a gyorsabb, hatékonyabb, jobb?

D
 
1

int

Poetro · 2006. Jún. 2. (P), 09.29
Én az int-re szavazok, mert a programozási nyelveken a dátumkezelő függvényekkel szépen testre lehet szabni, hogyan is akarom az adott dátumot kiíratni, milyen időeltolódással (nemzetközi oldalak esetén), és egyáltalán melyik részére van szükségem (csak az óra percre, vagy csak az év-hó-napra).
2

DATETIME

Török Gábor · 2006. Jún. 2. (P), 10.16
A DATETIME praktikus, ha dolgoznod is kell a dátumokkal, lásd MySQL dátumkezelő függvények. A Poetro által említett formázás ugyanúgy megtehető SQL szinten is pl. a DATE_FORMAT segítségével.
3

MySQL dátumkezelés

Anonymous · 2006. Jún. 2. (P), 13.58
Úgy nézem elég sok dolgot tud a MySQL alapból is.
Ez eddig 1:1. Többiek?
4

datetime vs timestamp

sotetbarna · 2006. Jún. 2. (P), 15.56
Hali!

Nem mindegy, hogy datetime vagy timestamp a típus, én a datetime-ra szavazok, lásd mysql formázási lehetőségek.

A timestamp mezők közül a táblában első automatikusan töltődik insert és update esetén (amennyiben nem adsz neki értéket külön), erre érdemes odafigyelni.

A manual ezt írja róla:
11.1.2. Overview of Date and Time Types

Barna
5

Timestamp

Anonymous · 2006. Jún. 2. (P), 16.07
Én nem a MySQL timestamp típusú mezőre gondoltam, hanem unix timestampre!
Remélem te is..
6

bocs

sotetbarna · 2006. Jún. 2. (P), 21.57
kicsit gyorsan olvastam, a unix valahogy csak most tűnt fel...

nnnna új fényben a véleményem:
marad a datetime-ra a voks, egyszerűen azért, mert amikor lekérek a mysql konzolon egy listát, akkor nem úgy akarom lekérni, hogy
select *, from_unixtime(unix_timestamp_idopont) as idopont from log where ....;
hanem
select * from log where ....;
sokat dolgozom konzolon, folyton masszírozgatni kell az adatokat, maradjunk az egyszerű változatnál, lusta vagyok ennyit feleslegesen gépelni :) (meg igazából amikor egy dátumot kellene beállítani, akkor mindig unix timestampra kellene konvertálni... szükség van az élet bonyolítására?)

ha eltérő formátumban akarom lekérni a dátumot, az inkább php-ből van, de akkor meg az a pár plusz karakter belefér:
select *, date_format(idopont,'%m-%d-%Y') as idopont from log where ....;
Barna
7

datetime

vbence · 2006. Jún. 3. (Szo), 00.36
Szerintem is datetime.. ha nem lenne hazsnos nem rakták volna bele.. ;)
Amúgy ha belegondolsz, hogy egy dátum tipusú mezőt nem csak megjeleíteni akrasz, hanem mondjuk szűrni is, akkor egyszerűbb aszondani, hogy xy >= '2006-01-01', mint a kívánt dátumhoz tartozó timestamp-et kiszámolni, és azt beplántálni a lekérdezésedbe. Több a hibalehetőség is.

És igen, ahogy tanult kollégám mondta, van DATE_FORMAT, és egy sql-ben megoldott dátum formázás (pl év lekérdezése), sokkal elegánsabb, mintha utána a szkript csinálná.. (ez persze szubjektív vélemény)