SQL การทำงานกับวันที่และเวลา

ในการจัดการวันที่และเวลาภายในฐานข้อมูล SQL มีประเภทข้อมูลหลายประเภทที่ใช้ในการเก็บวันที่และเวลา ได้แก่ DATE, DATETIME, TIMESTAMP, และ YEAR ซึ่งแต่ละประเภทมีการใช้งานที่แตกต่างกันเล็กน้อยขึ้นอยู่กับความต้องการของเรา

DATE

ข้อมูลประเภท DATE ใช้สำหรับเก็บข้อมูลเฉพาะวันที่ โดยไม่เก็บข้อมูลเวลา รูปแบบการเก็บข้อมูลเป็น YYYY-MM-DD ซึ่งรองรับช่วงวันที่ตั้งแต่ปี 1000 ถึงปี 9999

เราจะลองสร้างตาราง persons เพื่อเก็บข้อมูลบุคคลด้วยคำสั่งดังนี้

SQL
CREATE TABLE persons (
    id INT PRIMARY KEY,
    name VARCHAR(100),
    birthdate DATE
);

INSERT INTO persons (id, name, birthdate)
VALUES 
(1, 'John Doe', '1990-05-12'),
(2, 'Jane Smith', '1985-11-23');

ตาราง persons จะมีคอลัมน์ birthdate สำหรับเก็บข้อมูลวันเกิดในรูปแบบ DATE

DATETIME

ข้อมูลประเภท DATETIME ใช้สำหรับเก็บข้อมูลทั้งวันที่และเวลา รูปแบบการเก็บข้อมูลเป็น YYYY-MM-DD HH:MM:SS โดยช่วงเวลาที่รองรับคือปี 1000 ถึง 9999 และเก็บเวลาในช่วง 00:00:00 ถึง 23:59:59

ลองสร้างตาราง orders ด้วยคำสั่งดังนี้

SQL
CREATE TABLE orders (
    order_id INT PRIMARY KEY,
    customer_name VARCHAR(100),
    order_datetime DATETIME
);

INSERT INTO orders (order_id, customer_name, order_datetime)
VALUES 
(1, 'Alice', '2023-10-13 15:45:00'),
(2, 'Bob', '2023-10-12 09:30:00');

ในตาราง orders คอลัมน์ order_datetime เก็บวันที่และเวลาในการสั่งซื้อ

ข้อมูลในตาราง orders จะเป็นดังนี้

TIMESTAMP

ข้อมูลประเภท TIMESTAMP ใช้สำหรับเก็บข้อมูลวันที่และเวลาเช่นเดียวกับ DATETIME แต่มีความพิเศษตรงที่ข้อมูลจะถูกบันทึกตามเวลา UTC (Universal Time Coordinated) และแปลงเป็นเวลาท้องถิ่นของระบบโดยอัตโนมัติเมื่อดึงข้อมูลออกมา รองรับช่วงเวลาตั้งแต่ปี 1970 ถึงปี 2038

ลองสร้างตาราง logs ด้วยคำสั่งต่อไปนี้

SQL
CREATE TABLE logs (
    log_id INT PRIMARY KEY,
    description VARCHAR(255),
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

INSERT INTO logs (log_id, description)
VALUES 
(1, 'Created new user'),
(2, 'Updated user profile');

ตาราง logs จะเก็บการบันทึกการกระทำและเวลาที่บันทึกโดยอัตโนมัติด้วยคอลัมน์ updated_at ที่ใช้ TIMESTAMP

YEAR

ประเภทข้อมูล YEAR ใช้สำหรับเก็บเฉพาะปีในรูปแบบตัวเลข ซึ่งรองรับปีในช่วงตั้งแต่ 1901 ถึง 2155

ลองสร้างตาราง cars โดยใช้คำสั่งดังนี้

SQL
CREATE TABLE cars (
    car_id INT PRIMARY KEY,
    model VARCHAR(100),
    manufacture_year YEAR
);

INSERT INTO cars (car_id, model, manufacture_year)
VALUES 
(1, 'Toyota Corolla', 2015),
(2, 'Honda Civic', 2018);

ตาราง cars มีคอลัมน์ manufacture_year เพื่อเก็บปีที่รถถูกผลิต

ตารางสรุปประเภทข้อมูลวันที่และเวลาใน SQL

ประเภทข้อมูลคำอธิบายตัวอย่างรูปแบบ
DATEเก็บเฉพาะวันที่YYYY-MM-DD
DATETIMEเก็บวันที่และเวลาYYYY-MM-DD HH:MM:SS
TIMESTAMPเก็บวันที่และเวลา แต่จะปรับเวลาเป็น UTCYYYY-MM-DD HH:MM:SS
YEARเก็บเฉพาะปีYYYY
แชร์เรื่องนี้