Sobes.tech
Junior

DATETIME və TIMESTAMP məlumat tipləri arasındakı fərqi təsvir edin.

sobes.tech Süni İntellekt

AI-dan cavab

Əksər SQL verilənlər bazalarında (MySQL kimi) DATETIMETIMESTAMP arasındakı əsas fərqlər aşağıdakılardır:

  • Yadda saxlanma:

    • DATETIME il, ay, gün, saat, dəqiqə, saniyə saxlayır.
    • TIMESTAMP Unix epoxasının başlanğıcından keçən saniyə sayını saxlayır (1 yanvar 1970 UTC).
  • Dəyər aralığı:

    • DATETIME adətən daha geniş tarix aralığına malikdir (məsələn, '1000-01-01 00:00:00' ilə '9999-12-31 23:59:59' arasında).
    • TIMESTAMP məhdud aralığa malikdir, 32 və ya 64 bitlik təqdimata bağlı olaraq, adətən 2038-ci ilə qədər.
  • Zaman zonası:

    • DATETIME zaman zonasından asılı deyil və daxil edilən dəqiq dəyəri saxlayır.
    • TIMESTAMP qeydiyyata alınarkən mövcud zaman zonasından UTC-yə çevrilir və çıxararkən geri, ona görə də dəyəri müştərinin zaman zonasına bağlıdır.
  • Həcmi:

    • Yadda saxlanma həcmi azca fərqli ola bilər, lakin tez-tez TIMESTAMP (4 bayt) DATETIME (8 bayt) ilə müqayisədə kiçikdir.
  • Avtomatik yeniləmə:

    • TIMESTAMP satır dəyişdikdə avtomatik yenilənə bilər (ON UPDATE CURRENT_TIMESTAMP ilə və ya standart olaraq istifadə edilə bilər), bu, son dəyişiklikləri izləyən sahələr üçün əlverişlidir. DATETIME bu funksiyanı dəstəkləmir (lakin triggerlər vasitəsilə əldə edilə bilər).

Müqayisə cədvəli:

Xüsusiyyət DATETIME TIMESTAMP
Saxlama formatı İl, ay, gün, saat, dəqiqə, saniyə Unix epoxasının başlanğıcından keçən saniyələr
Zaman zonası Zaman zonasından asılı deyil Müştərinin zaman zonasına bağlı
Dəyər aralığı Ümumiyyətlə daha geniş, 9999-cu ilə qədər Məhdud, adətən 2038-ci ilə qədər (32-bit üçün)
Avtomatik yeniləmə Yox (daxili deyil) Bəli (istəyə bağlı, ON UPDATE CURRENT_TIMESTAMP)
Tipik ölçü 8 bayt 4 bayt

Təqdim SQL nümunəsi:

-- DATETIME ilə nümunə cədvəl
CREATE TABLE events_datetime (
    id INT PRIMARY KEY,
    event_name VARCHAR(255),
    event_time DATETIME
);

-- TIMESTAMP ilə nümunə cədvəl
CREATE TABLE events_timestamp (
    id INT PRIMARY KEY,
    event_name VARCHAR(255),
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, -- Yaradılma vaxtını avtomatik təyin edir
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP -- Dəyişiklik zamanı avtomatik yenilənir
);