Sobes.tech
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 -- ავტომატური განახლება ცვლილებისას
);