Sobes.tech
Junior

DATETIME va TIMESTAMP ma'lumot turlari o'rtasidagi farqni tavsiflang.

sobes.tech AI

AIdan javob

Ko'p SQL ma'lumotlar bazalarida (MySQL kabi) DATETIME va TIMESTAMP o'rtasidagi asosiy farqlar quyidagilardan iborat:

  • Saqlash:

    • DATETIME yil, oy, kun, soat, daqiqa, sekundalarni saqlaydi.
    • TIMESTAMP Unix epokasi boshlanishidan boshlab o'tgan sekundalar sonini saqlaydi (1 yanvar 1970 UTC).
  • Qiymatlar diapazoni:

    • DATETIME odatda kengroq sana diapazoniga ega (masalan, '1000-01-01 00:00:00' dan '9999-12-31 23:59:59' gacha).
    • TIMESTAMP cheklangan diapazonga ega, 32 yoki 64-bitli taqdimotga bog'liq holda, odatda 2038 yilgacha.
  • Vaqt zonasi:

    • DATETIME vaqt zonasidan mustaqil va kiritilgan aniq qiymatni saqlaydi.
    • TIMESTAMP hozirgi vaqt zonasidan UTC ga konvert qilinadi va qaytarishda qayta konvert qilinadi, shuning uchun uning qiymati mijozning vaqt zonasiga bog'liq.
  • Hajmi:

    • Saqlash hajmi biroz farq qilishi mumkin, lekin ko'pincha TIMESTAMP (4 bayt) DATETIME (8 bayt) ga nisbatan kichikroq.
  • Avtomatik yangilash:

    • TIMESTAMP satr o'zgarganda avtomatik ravishda yangilanishi uchun sozlanishi mumkin (ON UPDATE CURRENT_TIMESTAMP bilan yoki standart sifatida ishlatiladi), bu oxirgi o'zgarishni kuzatadigan maydonlar uchun qulay. DATETIME bunday imkoniyatga ega emas (garchi triggerlar bilan erishish mumkin).

Taqqoslash jadvali:

Xususiyat DATETIME TIMESTAMP
Saqlash formati Yil, oy, kun, soat, daqiqa, sekundalar Unix epokasi boshlanishidan boshlab sekundalar
Vaqt zonasi Vaqt zonasidan mustaqil Mijozning vaqt zonasiga bog'liq
Qiymatlar diapazoni Odatda kengroq, 9999 yilgacha Cheklangan, odatda 2038 yilgacha (32-bit uchun)
Avtomatik yangilash Yo'q (integratsiyalashmagan) Ha (ixtiyoriy, ON UPDATE CURRENT_TIMESTAMP)
Tipik hajm 8 bayt 4 bayt

Tabel yaratish uchun SQL misoli:

-- DATETIME bilan jadval misoli
CREATE TABLE events_datetime (
    id INT PRIMARY KEY,
    event_name VARCHAR(255),
    event_time DATETIME
);

-- TIMESTAMP bilan jadval misoli
CREATE TABLE events_timestamp (
    id INT PRIMARY KEY,
    event_name VARCHAR(255),
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, -- Yaratilish vaqtini avtomatik o'rnatish
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP -- O'zgarish bilan avtomatik yangilash
);