Junior
DATETIME ve TIMESTAMP veri tipleri arasındaki farkı açıklayın.
sobes.tech yapay zeka
AI'dan gelen yanıt
Çoğu SQL veritabanında (MySQL gibi) DATETIME ve TIMESTAMP arasındaki temel farklar şunlardır:
-
Depolama:
DATETIMEyıl, ay, gün, saat, dakika, saniye bilgilerini saklar.TIMESTAMPUnix epoch başlangıcından itibaren geçen saniye sayısını saklar (1 Ocak 1970 UTC).
-
Değer aralığı:
DATETIMEgenellikle daha geniş bir tarih aralığına sahiptir (örneğin, '1000-01-01 00:00:00' ile '9999-12-31 23:59:59' arasında).TIMESTAMPsınırlı bir aralıkta olup, 32-bit veya 64-bit gösterime bağlı olarak genellikle 2038 yılına kadar gider.
-
Zaman dilimi:
DATETIMEzaman diliminden bağımsızdır ve girilen değeri tam olarak saklar.TIMESTAMPkaydedilirken mevcut zaman diliminden UTC'ye dönüştürülür ve alınırken tekrar eski haline getirilir, bu nedenle değeri istemci zaman dilimine bağlıdır.
-
Boyut:
- Depolama boyutu hafifçe değişebilir, ancak genellikle
TIMESTAMP(4 bayt)DATETIME(8 bayt) ile karşılaştırıldığında daha küçüktür.
- Depolama boyutu hafifçe değişebilir, ancak genellikle
-
Otomatik güncelleme:
TIMESTAMPotomatik olarak satır değiştiğinde güncellenebilir (ON UPDATE CURRENT_TIMESTAMPile varsayılan olarak kullanılır veya belirtilir), bu da son değişikliği izleyen alanlar için kullanışlıdır.DATETIMEbu özelliğe sahip değildir (ancak tetikçilerle sağlanabilir).
Karşılaştırma tablosu:
| Özellik | DATETIME | TIMESTAMP |
|---|---|---|
| Depolama formatı | Yıl, ay, gün, saat, dakika, saniye | Unix epoch başlangıcından itibaren saniyeler |
| Zaman dilimi | Zaman diliminden bağımsız | İstemci zaman dilimine bağlı |
| Değer aralığı | Genellikle daha geniş, 9999 yılına kadar | Sınırlı, genellikle 2038 yılına kadar (32-bit için) |
| Otomatik güncelleme | Hayır (yerleşik değil) | Evet (isteğe bağlı, ON UPDATE CURRENT_TIMESTAMP) |
| Tipik boyut | 8 bayt | 4 bayt |
Tablo oluşturmak için SQL örneği:
-- DATETIME ile tablo örneği
CREATE TABLE events_datetime (
id INT PRIMARY KEY,
event_name VARCHAR(255),
event_time DATETIME
);
-- TIMESTAMP ile tablo örneği
CREATE TABLE events_timestamp (
id INT PRIMARY KEY,
event_name VARCHAR(255),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, -- Oluşturma zamanını otomatik ayarla
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP -- Güncellemeyi otomatik yap
);