ในการจัดการวันที่และเวลาภายในฐานข้อมูล SQL มีประเภทข้อมูลหลายประเภทที่ใช้ในการเก็บวันที่และเวลา ได้แก่ DATE, DATETIME, TIMESTAMP, และ YEAR ซึ่งแต่ละประเภทมีการใช้งานที่แตกต่างกันเล็กน้อยขึ้นอยู่กับความต้องการของเรา
DATE
ข้อมูลประเภท DATE ใช้สำหรับเก็บข้อมูลเฉพาะวันที่ โดยไม่เก็บข้อมูลเวลา รูปแบบการเก็บข้อมูลเป็น YYYY-MM-DD ซึ่งรองรับช่วงวันที่ตั้งแต่ปี 1000 ถึงปี 9999
เราจะลองสร้างตาราง persons เพื่อเก็บข้อมูลบุคคลด้วยคำสั่งดังนี้
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 ด้วยคำสั่งดังนี้
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 ด้วยคำสั่งต่อไปนี้
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 โดยใช้คำสั่งดังนี้
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 | เก็บวันที่และเวลา แต่จะปรับเวลาเป็น UTC | YYYY-MM-DD HH:MM:SS |
YEAR | เก็บเฉพาะปี | YYYY |
