Sử dụng hàm CAST() hoặc DATE() để lấy phần ngày từ cột DATETIME/TIMESTAMP.
Cú pháp
-- Cách 1: CAST SELECT CAST(datetime_column AS DATE) AS date_only FROM table_name; -- Cách 2: DATE() - ngắn gọn hơn SELECT DATE(datetime_column) AS date_only FROM table_name;
Ví dụ minh họa
mysql> CREATE TABLE ConvertDateTimeToDate (ArrivalDatetime DATETIME);
Query OK, 0 rows affected (0.37 sec)
mysql> INSERT INTO ConvertDateTimeToDate VALUES
(DATE_ADD(NOW(), INTERVAL -1 YEAR)),
('2017-11-21 13:10:20'),
('2016-05-24 21:11:24'),
('2012-04-30 04:05:50');
Query OK, 4 rows affected
Kiểm tra dữ liệu gốc:
+---------------------+ | ArrivalDatetime | +---------------------+ | 2017-12-27 10:05:21 | | 2017-11-21 13:10:20 | | 2016-05-24 21:11:24 | | 2012-04-30 04:05:50 | +---------------------+
Chuyển đổi:
mysql> SELECT CAST(ArrivalDatetime AS DATE) AS Date FROM ConvertDateTimeToDate;
Kết quả:
+------------+ | Date | +------------+ | 2017-12-27 | | 2017-11-21 | | 2016-05-24 | | 2012-04-30 | +------------+
So sánh CAST() vs DATE()
| Hàm | Ưu điểm | Nhược điểm |
|---|---|---|
| CAST(x AS DATE) | Chuẩn SQL, rõ ràng ý định ép kiểu | Dài hơn |
| DATE(x) | Ngắn gọn, dễ đọc, tối ưu cho MySQL | Chỉ dành cho MySQL |
Khuyến nghị
Dùng DATE() cho code MySQL thuần túy. Dùng CAST() nếu cần code tương thích đa nền tảng.