Junior
Тавсиф диҳед фарқияти байни намудҳои маълумоти DATETIME ва TIMESTAMP.
sobes.tech AI
Ҷавоб аз AI
SQL ბაზების უმეტესობაში DATETIME და TIMESTAMP შორის ძირითადი განსხვავებები შემდეგია:
-
შენახვა:
DATETIMEინახავს წელი, თვე, დღე, საათი, წუთი, წამი.TIMESTAMPინახავს სეკუნდების რაოდენობას Unix ეპოქის დასაწყისიდან (1 იანვარი 1970, UTC).
-
მნიშვნელობათა დიაპაზონი:
DATETIMEჩვეულებრივ აქვს უფრო ფართო დიაპაზონი (მაგალითად, '1000-01-01 00:00:00'-დან '9999-12-31 23:59:59'-მდე).TIMESTAMPაქვს შეზღუდული დიაპაზონი, დამოკიდებულია 32-ბიტიან ან 64-ბიტიან წარმოდგენაზე, ჩვეულებრივ 2038 წლამდე 32-ბიტისთვის.
-
დროის ზონა:
DATETIMEარ არის დამოკიდებული დროის ზონაზე და ინახავს ზუსტად შეტანილ მნიშვნელობას.TIMESTAMPგარდაქმნილია მიმდინარე დროის ზონიდან UTC-ზე შენახვისას და უკან, ამიტომ მნიშვნელობა დამოკიდებულია მომხმარებლის დროის ზონაზე.
-
ზომა:
- შენახვის ზომა შეიძლება ცოტათი განსხვავდებოდეს, მაგრამ ხშირად
TIMESTAMPნაკლებია (4 ბაიტით) შედარებითDATETIME-თან (8 ბაიტით).
- შენახვის ზომა შეიძლება ცოტათი განსხვავდებოდეს, მაგრამ ხშირად
-
ავტომატური განახლება:
TIMESTAMPშეიძლება იყოს კონფიგურირებული ავტომატურად განახლებისთვის ცვლილების დროს (თუ გამოიყენება როგორც საწყისი ანON UPDATE CURRENT_TIMESTAMP-ით), რაც სასარგებლოა ბოლო ცვლილების დროს მონიტორინგისთვის.DATETIMEასეთი ფუნქციონალი არ აქვს (თუმცა შეიძლება მიაღწიო ტრიგერებით).
შედარების სია:
| მახასიათებელი | DATETIME | TIMESTAMP |
|---|---|---|
| შენახვის ფორმატი | წელი, თვე, დღე, საათი, წუთი, წამი | სეკუნდების რაოდენობა Unix ეპოქიდან (UTC) |
| დროის ზონა | დამოუკიდებელია დროის ზონიდან | დამოკიდებულია მომხმარებლის დროის ზონაზე |
| მნიშვნელობათა დიაპაზონი | ჩვეულებრივ უფრო ფართო, 9999 წლამდე | შეზღუდული, ჩვეულებრივ 2038 წლამდე (32-ბიტისთვის) |
| ავტომატური განახლება | არა (შენახული) | არის (სურვილისამებრ, ON UPDATE CURRENT_TIMESTAMP) |
| ტიპის ზომა | 8 ბაიტი | 4 ბაიტი |
საკვანძო მაგალითი SQL-ისთვის:
-- მაგალითი `DATETIME`-ით
CREATE TABLE events_datetime (
id INT PRIMARY KEY,
event_name VARCHAR(255),
event_time DATETIME
);
-- მაგალითი `TIMESTAMP`-ით
CREATE TABLE events_timestamp (
id INT PRIMARY KEY,
event_name VARCHAR(255),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, -- ავტომატური დროის დაყენება შექმნისას
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP -- ავტომატური განახლება ცვლილებისას
);