Thời gian đọc: 7 phút
Trong MySQL, kiểu dữ liệu ngày giờ (Date and Time Types) được sử dụng để lưu trữ thông tin liên quan đến ngày tháng và thời gian. Các kiểu dữ liệu này đóng vai trò quan trọng trong việc quản lý và xử lý các thông tin liên quan đến thời gian trong cơ sở dữ liệu. Bài viết này sẽ cung cấp một cái nhìn chi tiết về các kiểu dữ liệu ngày giờ trong MySQL, từ cơ bản đến nâng cao, cùng với các ví dụ minh họa cụ thể.
Các kiểu dữ liệu ngày giờ trong MySQL được thiết kế để lưu trữ thông tin về ngày, giờ, và khoảng thời gian. Việc chọn đúng kiểu dữ liệu là rất quan trọng để đảm bảo tính chính xác và hiệu suất của cơ sở dữ liệu khi làm việc với các thông tin liên quan đến thời gian.
DATE
được sử dụng để lưu trữ ngày mà không có thông tin về thời gian. Thông tin ngày được lưu dưới dạng năm-tháng-ngày.
YYYY-MM-DD
DATE
CREATE TABLE events (
event_date DATE
);
Cột event_date
có thể lưu trữ các giá trị như '2024-09-12'
để chỉ ngày diễn ra sự kiện.
DATETIME
được sử dụng để lưu trữ cả ngày và thời gian. Thông tin được lưu dưới dạng năm-tháng-ngày giờútây.
YYYY-MM-DD HH:MM:SS
DATETIME
CREATE TABLE appointments (
appointment_time DATETIME
);
Cột appointment_time
có thể lưu trữ các giá trị như '2024-09-12 15:30:00'
để chỉ ngày và giờ của cuộc hẹn.
TIMESTAMP
cũng lưu trữ cả ngày và thời gian, nhưng với khả năng tự động cập nhật giá trị khi bản ghi được chỉnh sửa. Thời gian được lưu dưới dạng UTC và có thể tự động chuyển đổi sang múi giờ địa phương khi truy xuất.
YYYY-MM-DD HH:MM:SS
TIMESTAMP
CREATE TABLE logs (
log_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
Cột log_time
sẽ tự động nhận giá trị thời gian hiện tại khi bản ghi được tạo hoặc cập nhật.
TIME
được sử dụng để lưu trữ thời gian mà không có thông tin về ngày. Thông tin thời gian được lưu dưới dạng giờútây.
HH:MM:SS
TIME
CREATE TABLE shifts (
shift_start TIME
);
Cột shift_start
có thể lưu trữ các giá trị như '09:00:00'
để chỉ thời gian bắt đầu của một ca làm việc.
YEAR
được sử dụng để lưu trữ năm. Đây là kiểu dữ liệu đơn giản nhất cho thông tin năm.
YYYY
YEAR
CREATE TABLE employees (
hire_year YEAR
);
Cột hire_year
có thể lưu trữ các giá trị như 2024
để chỉ năm thuê nhân viên.
MySQL cung cấp một loạt các hàm để làm việc với dữ liệu ngày giờ:
SELECT NOW();
-- Kết quả: '2024-09-12 15:30:00'
SELECT DATE_FORMAT(NOW(), '%Y-%m-%d');
-- Kết quả: '2024-09-12'
SELECT TIMESTAMPDIFF(DAY, '2024-01-01', NOW());
-- Kết quả: Số ngày giữa ngày 2024-01-01 và ngày hiện tại
MySQL có thể xử lý múi giờ với các hàm và tùy chọn:
SELECT CONVERT_TZ('2024-09-12 15:30:00', 'UTC', 'Asia/Ho_Chi_Minh');
-- Kết quả: Thời gian chuyển đổi từ UTC sang múi giờ Ho Chi Minh
Sử dụng DATE
khi bạn chỉ cần lưu trữ ngày mà không cần thông tin về thời gian. Ví dụ, ngày sinh hoặc ngày diễn ra sự kiện.
Sử dụng DATETIME
khi bạn cần lưu trữ cả ngày và giờ, và không cần tính năng tự động cập nhật. Ví dụ, thời gian đặt hàng hoặc thời điểm sự kiện diễn ra.
Sử dụng TIMESTAMP
khi bạn cần lưu trữ cả ngày và giờ với tính năng tự động cập nhật. Thích hợp cho các bản ghi có thể thay đổi hoặc cần theo dõi thời gian cập nhật.
Sử dụng TIME
khi bạn chỉ cần lưu trữ thông tin về thời gian mà không có thông tin về ngày. Ví dụ, thời gian bắt đầu và kết thúc của một ca làm việc.
Sử dụng YEAR
khi bạn chỉ cần lưu trữ thông tin về năm. Thích hợp cho các ứng dụng cần chỉ lưu trữ năm mà không cần thông tin về ngày hoặc giờ.
Việc chọn đúng kiểu dữ liệu ngày giờ trong MySQL rất quan trọng để đảm bảo tính chính xác và hiệu suất của cơ sở dữ liệu. Hy vọng rằng bài viết này đã cung cấp cho bạn cái nhìn rõ ràng và chi tiết về các kiểu dữ liệu ngày giờ trong MySQL, cùng với các ví dụ minh họa từ cơ bản đến nâng cao. Hãy lựa chọn kiểu dữ liệu phù hợp với yêu cầu của bạn để tối ưu hóa việc lưu trữ và xử lý thông tin ngày giờ trong cơ sở dữ liệu của bạn