Sobes.tech
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:

    • DATETIME yıl, ay, gün, saat, dakika, saniye bilgilerini saklar.
    • TIMESTAMP Unix epoch başlangıcından itibaren geçen saniye sayısını saklar (1 Ocak 1970 UTC).
  • Değer aralığı:

    • DATETIME genellikle daha geniş bir tarih aralığına sahiptir (örneğin, '1000-01-01 00:00:00' ile '9999-12-31 23:59:59' arasında).
    • TIMESTAMP sı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:

    • DATETIME zaman diliminden bağımsızdır ve girilen değeri tam olarak saklar.
    • TIMESTAMP kaydedilirken 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.
  • Otomatik güncelleme:

    • TIMESTAMP otomatik olarak satır değiştiğinde güncellenebilir (ON UPDATE CURRENT_TIMESTAMP ile varsayılan olarak kullanılır veya belirtilir), bu da son değişikliği izleyen alanlar için kullanışlıdır. DATETIME bu ö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
);