2010-11-08 21 views
25

Kaydetmek için hangi veri türünü kullanmalıyım unix_timestamp value (MySQL)?Unix_timestamp (MySQL) için veri türü nedir?

int(11) 

endeksleme için iyidir ve koşullar

+4

http://dev.mysql.com/doc/refman/5.0/en/datetime.html – teemitzitrone

+0

Zaman damgası unix_timestamp ile aynı mı? – jzarsuelo

+0

@ user239431: UNIX_TIMESTAMP bir MySQL işlevidir: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_unix-timestamp –

cevap

33

tipi gibi tam sayıdır.
Bir dönem değeri olarak depolanmaktadır ancak MySQL YYYY-AA-GG SS: dd: ss "olarak değerini gösterir var.

+14

INT kullanıyorsanız, imzalı sürümü yalnızca -2147483648'den 2147483647'ye kadar hatırlamanız gerekir, üst sınır [yıl 2038 hatası] 'nı tetikler (http://en.wikipedia.org/wiki/Year_2038_problem). Sen INT kullanabilirsiniz (11) UNSIGNED veya BIGINT - bu [bazı uyarılar] vardır (http://dev.mysql.com/doc/refman/5.6/en/numeric-type-overview.html) ikincisi ile ancak var [ masif] (http://en.wikipedia.org/wiki/Integer_ (computer_science)). Şahsen, MySQL'in dahili fonksiyonları ile daha güvenli hissediyorum, ancak büyük veri kümeleri için indeksleme ve karşılaştırma işlevleri sizi etkileyebilir. –

+0

Gelecek için I +1 William Turrell'ın yorumu. UNSIGNED INT benim bakış açımdan ilerlemenin yolu olacak, ancak en doğru cevap veri tabanı bilgisini çekeceğiniz dile bağlı olacaktır (eğer kodlama sıfırdan geliyorsa). Örnek: Bir java.lang.Long için UNSIGNED INT eşleştiren bir Java dükkan ise (MySQL + Java kullanıcıları için buraya tablo 5.2 bakınız: https://dev.mysql.com/doc/connector-j/en/connector-j REFERANS-tipi conversions.html). Bu şekilde, 2038'de bir hatayı alacağınız bir kod yazmadığınızdan dolayı, DB'de bir miktar yer ayırırsınız. Büyük nokta @WilliamTurrell. 2038 hata açısından –

+0

, durumdan kaçınmak için makul bir ölçü olabilir bir 12 veya 13 için int 'in 11 (11)' artan olmaz? –