MySQL: Ne kullanmak en iyisidir, Unix TimeStamp Veya DATETIME [çoğaltmak]

4 Cevap php

Bu soru burada zaten bir cevabı var:

4 Cevap

Zaman damgası (both PHP ones and MySQL's ones) 32 bit (i.e. 4 bytes) tamsayılar kullanarak saklanır; oldukları 1970-2038 giden bir tarih aralığı ile sınırlı demektir.

DATETIME bu sınırlama yok - ama daha bayt kullanarak saklanır (8 bytes, if I'm not mistaken)


After, between storing timestamps as seen by PHP, or timestamps as seen by MySQL :


And, for more informations between MySQL's TIMESTAMP and DATETIME datatypes, see 10.3.1. The DATETIME, DATE, and TIMESTAMP Types

Diğerleri söylediler, zaman damgaları (1970-2038) tarihsaat küçük bir aralıkta temsil edebilir. DATETIME bir zaman dilimi olmadan bir tarih ve saatini kaydeder oysa Ancak, zaman damgaları, böylece zaman dilimi onları bağımsız hale Unix Epoch (1970-01-01 00:00:00 UTC) itibaren saniye sayısını ölçmek. Zamanında tam nokta bir DATETIME (DATETIME alanında depolanan değildir) bir zaman dilimi gerektiren anlamına gelirken, diğer bir deyişle damgaları açıkça, zaman içinde belirli bir noktaya başvuru. Bu önemli neden görmek için, bizim zaman dilimini değiştirmek ne olur düşünün.

Kullanıcının biz DateTime 2010-03-27 12:00 UTC saklamak istediğinizi varsayalım. Bu saklamak ve zaman damgası veya DATETIME kullanarak almak, daha sonra genellikle hiçbir fark orada görünüyor. Sunucu şimdi yerel saat dilimi UTC +01 böylece değiştirirse biz datetime çekin Ancak, o zaman iki farklı sonuç almak.

Bir DateTime alanı ayarlamak istiyorsanız, o zaman diliminde değişime rağmen, 12:00 2010/03/27 olarak datetime rapor olacaktır. Bir zaman damgası alanı ayarlamak istiyorsanız, tarih 2010-03-27 11:00 olarak rapor edilir. Bu iki veri türü olan bir sorun değildir - onlar biraz farklı bilgileri depolamak gerçeğinin sadece bir sonucudur.

Önce 1 Ocak 1970 kayıtları sayısallaştırma sürece, ben UNIX çağı gibi. Tercih Onun meselesi, bütün imzasız numaraları birden fazla dil kullanarak başa basittir.

Sadece akılda tutmak, dönem 1 Ocak 1970 başlar. Şirketlerin bir çok önceki, yıllardır iş olmuştur, yoksa artık vardı.

Bu gerçekten bağlıdır. Sana bir diğer üstesinden 2 örnek vereceğim:

Timestamp is better than DATETIME when you want to store users session in the database and the session creation time (in Timestamp format) is used for fast row retrieval (with index).
E.g. table may look like this:
[session_create_time AS Timestamp][IP_address AS 32bit Int][etc...]
Having an index on the first two columns can really speed up your queries. If you had a DATETIME value type for the session_create_time field, then it could be taken much more time. Take into account that session queries are executed each time a user request a page, so efficiency is crucial.

Eğer bir kullanıcının doğum tarihi ya da esnek zaman aralığı gerektiren bazı tarihi olayları saklamak istediğinizde DATETIME Damgasıyla daha iyidir.