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:
DATETIMEyil, oy, kun, soat, daqiqa, sekundalarni saqlaydi.TIMESTAMPUnix epokasi boshlanishidan boshlab o'tgan sekundalar sonini saqlaydi (1 yanvar 1970 UTC).
-
Qiymatlar diapazoni:
DATETIMEodatda kengroq sana diapazoniga ega (masalan, '1000-01-01 00:00:00' dan '9999-12-31 23:59:59' gacha).TIMESTAMPcheklangan diapazonga ega, 32 yoki 64-bitli taqdimotga bog'liq holda, odatda 2038 yilgacha.
-
Vaqt zonasi:
DATETIMEvaqt zonasidan mustaqil va kiritilgan aniq qiymatni saqlaydi.TIMESTAMPhozirgi 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.
- Saqlash hajmi biroz farq qilishi mumkin, lekin ko'pincha
-
Avtomatik yangilash:
TIMESTAMPsatr o'zgarganda avtomatik ravishda yangilanishi uchun sozlanishi mumkin (ON UPDATE CURRENT_TIMESTAMPbilan yoki standart sifatida ishlatiladi), bu oxirgi o'zgarishni kuzatadigan maydonlar uchun qulay.DATETIMEbunday 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
);