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) DATETIME və TIMESTAMP arasındakı əsas fərqlər aşağıdakılardır:
-
Yadda saxlanma:
DATETIMEil, ay, gün, saat, dəqiqə, saniyə saxlayır.TIMESTAMPUnix epoxasının başlanğıcından keçən saniyə sayını saxlayır (1 yanvar 1970 UTC).
-
Dəyər aralığı:
DATETIMEadə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).TIMESTAMPmə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ı:
DATETIMEzaman zonasından asılı deyil və daxil edilən dəqiq dəyəri saxlayır.TIMESTAMPqeydiyyata 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.
- Yadda saxlanma həcmi azca fərqli ola bilər, lakin tez-tez
-
Avtomatik yeniləmə:
TIMESTAMPsatır dəyişdikdə avtomatik yenilənə bilər (ON UPDATE CURRENT_TIMESTAMPilə və ya standart olaraq istifadə edilə bilər), bu, son dəyişiklikləri izləyən sahələr üçün əlverişlidir.DATETIMEbu 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
);